2009-06-23 8 views
5

Tôi đã phát triển Báo cáo Kiểm soát của riêng mình mà chỉ đơn giản là không có gì nhưng vẽ văn bản trên CDC của DC của cửa sổ điều khiển của khách hàng. Tôi cũng có chức năng in để làm việc. Đầu ra báo cáo được gửi trực tiếp đến máy in. Tuy nhiên tôi muốn cho người dùng biết đầu ra trước khi báo cáo thực sự được in.Triển khai bản xem trước bản in của riêng tôi?

Tôi không thể thực hiện việc này bằng kiến ​​trúc xem trước bản in của MFC vì dự án của tôi không sử dụng kiến ​​trúc doc/view. Tôi có thể tự tạo cửa sổ xem trước bản in không? MFC xử lý như thế nào? Có cần xử lý đặc biệt hay ghi nhớ khi hiển thị đầu ra máy in trên màn hình không? Tôi đã đọc rằng MFC đã sử dụng 2 DC cho mục đích xem trước bản in. Tôi có cần phải làm điều này không nếu Im goin để xem trước bản in tùy chỉnh?

Đầu vào của bạn được đánh giá cao! tia.

P.S. tôi sử dụng Visual Studio 6 và không có tùy chọn để thay đổi điều này sang một phiên bản mới hơn cũng giống như không có cách nào để tôi thêm hỗ trợ doc/view.

Trả lời

0

Xem trước bản in không phải là đặc biệt. Nó chỉ có nghĩa là bạn phải render đến màn hình (hoặc bitmap) những gì bạn sẽ làm khác với DC của máy in. Điều này có nghĩa là sử dụng kích thước trang và cung cấp điều khiển giao diện người dùng cho trang trước/tiếp theo.

0

Tôi đã tweeked code này để biên dịch nó thành lib tĩnh. Nó dành cho các ứng dụng dựa trên hộp thoại.
Nếu bạn không cần chức năng đặc biệt, nó sẽ hoạt động tốt cho bạn.

Tôi phải đào sâu qua các cơ chế MFC để thêm chức năng bổ sung nhưng cuối cùng tôi đã xóa nó. Nếu bạn biết các ngôn ngữ lập trình khác, hãy thử tìm một điều khiển xem trước bản in bằng ngôn ngữ đó, tạo một dll và sử dụng nó từ ứng dụng MFC của bạn.

Ví dụ: tôi đã tìm thấy điều khiển NicePreview cho Delphi và nó hoạt động, đối với tôi, đẹp!

0

nếu bạn quản lý in đầu ra của mình thành tệp ở định dạng RTF và hiển thị nó trên màn hình, điều này có giải quyết được sự cố không?

0

Có lớp CPreviewView trong MFC. Có lẽ bạn có thể tìm cách để khởi tạo nó mà không có cấu trúc MDI.

Nếu không, bạn chỉ có thể vẽ trên màn hình bất cứ điều gì bạn đang vẽ trên máy in DC. Chỉ cần nhớ rằng bạn có thể sẽ cần phải giảm kích thước xuống cho dpi thấp hơn.