KIẾN THỨC LẬP TRÌNH
...
Về chúng tôi
|
|
Thiết lập cho máy in mặc định trước khi in trong MFC
In ấn là không thể thiếu trong hầu hết các phần mềm ứng dụng. Trước khi in, đôi khi ta cần thiết lập các thông số để phù hợp với kiểu dữ liệu, kiểu in trang dọc, ngang…
1.Vấn đề: In ấn là không thể thiếu trong hầu hết các phần mềm ứng dụng. Trước khi in, đôi khi ta cần thiết lập các thông số để phù hợp với kiểu dữ liệu, kiểu in trang dọc, ngang… Trên win NT thì khá đơn giản, ta chỉ cần đoạn mã lệnh sau : SetDefaultForPriter() { short nPreOrientation; CPrintDialog dlgPrint(FALSE, PD_ALLPAGES, this); LPDEVMODE pDevMode; if (AfxGetApp()->GetPrinterDeviceDefaults(&dlgPrint.m_pd)) { pDevMode = dlgPrint.GetDevMode(); GlobalUnlock(pDevMode); nPreOrientation = pDevMode->dmOrientation; pDevMode->dmOrientation = DMORIENT_PORTRAIT;//DMORIENT_LANDSCAPE; } if (dlgPrint.DoModal() != IDOK) { pDevMode->dmOrientation = nPreOrientation; return; }
} Tuy nhiên, trên win 9x hàm GetPrinterDeviceDefaults làm việc không tốt, thường gây lỗi. Đọc giả có thể xem dân lập trình c++ kêu gào ầm ĩ trên forum: http://www.codeguru.com/forum/archive/index.php/t-241097.html
2.Giải pháp : Thay vì việc dùng GetPrinterDeviceDefaults ta dùng các hàm API OpenPrinter, GetPrinter, SetPrinter trong thư viên winspool để xét mặc định cho máy in. Lưu ý, trước khi xét chúng ta phải detect được hệ điều hành đang chạy và lấy được tên máy in.
BÀI VIẾT LIÊN QUAN
|