套用
如果你希望你的應用程式在沒有框架干涉的情況下來處理列印,則可用所提供的構造函式使用“原樣”CPrintDialog類,或者從CPrintDialog派生自己的對話框類,並編制構造函式以滿足自己的需要。在這兩種情況下,由於這些對話框都是從類CCommondDialog類派生而來的,因此它們的行為將都類似於標準MFC對話框。
為了使用CPrintDialog對象,首先要用CPrintDialog構造函式來創建此對象。
一旦已經構造了對話框,你可以設定或修改m_pd結構中的任何值來初始化對話框的控制項的值。m_pd結構是PRINTDLG類型的。要獲取更多有關這個結構的信息,請參見Win32 SDK文檔。
如果你在m_pd中沒有為hDevMode和hDevName成員提供自己的句柄,則要確保在應用程式使用完此對話框時,調用Windows函式GlobalFree釋放這些句柄。當使用由CWinApp::OnFilePrintSetup函式提供的框架的Print Setup實現時,應用程式不必釋放這些句柄。這些句柄由CWinApp維護,並在CWinApp的析構函式中釋放。唯一必要的是在獨立使用CPrintDialog時,釋放這些句柄。
在初始化對話框之後,調用DoModal成員函式來顯示這個對話框,並允許用戶選擇列印選項。DoModal返回用戶選擇的是OK(IDOK)還是Cancel(IDCANCEL)按鈕。
如果DoModal返回IDOK,則應用程式可以用一個CPrintDialog成員函式來獲取用戶輸入的信息。
要在不顯示一個對話框的情況下獲取當前印表機的預設狀態,CPrintDialog::GetDefaults成員函式是一個有用的函式。這個成員函式不需要用戶的互動作用。
你可以調用Windows的CommDlgExtendedError函式來確定在對話框的初始化過程中是否發生了錯誤,並獲得有關錯誤的進一步訊息。要獲取有關這個函式的更多信息,請參見Win32 SDK文檔。
CPrintDialog依賴由Windows 3.1及其更高版本引進的COMMDLG.DLL文檔。要定製此對話框,先從CPrintDialog派生一個新類,提供一個定製對話框模板,並增加一個處理來自擴展控制項的通知訊息的訊息映射。任何未處理訊息將傳遞給基類處理。不需要定製hook函式。
要想根據對話框是Print還是Print Setup來不同地處理同一條訊息,應用程式必須為每個對話框派生一個新類。還必須重載Windows函式AttachOnSetup,它負責處理當在Print對話框內選擇Print Setup按鈕時新對話框的創建。如果要獲取有關使用CPrintDialog的更多信息,請參見“Visual C++程式設計師指南”中的文章“通用對話框類”。
#include <afxdlgs.h>參閱:CPrintInfo
成員函式
數據成員
m_pd 用來定製CPrintDialog對話框的結構。
構造函式
CPrintDialog 構造一個CPrintDialog對話框。
操作
CreatePrinterDC 創建一個印表機設備環境,但不顯示Print對話框。
DoModal 顯示對話框,並允許用戶進行選擇。
GetCopies 獲取所請求的備份數目。
GetDefaults 檢取設備預設項,但不顯示對話框。
GetDeviceName 檢取當前所選列印設備的名字。
GetDevMode 檢取DEVMODE結構。
GetDriverName 檢取當前所選印表機驅動器的名字。
GetFromPage 檢取列印範圍的起始頁。
GetToPage 檢取列印範圍的結束頁。
GetPortName 檢取當前所選印表機連線埠名。
GetPrinterDC 檢取設備環境的句柄。
PrintAll 確定是否請求列印文檔的所有頁。
PrintCollate 確定是否請求校對備份。
PrintRange 確定是否只列印指定範圍內的頁。
PrintSelection 確定是否只列印當前所選項。