複製鏈接
請複製以下鏈接發送給好友

CPrintDialog

鎖定
CPrintDialog,封裝了Windows通用打印對話框,為打印提供的服務。通用打印對話框以一種與Windows標準一致的方式提供了一種實現Print和Print Setup對話框的簡單方法。
外文名
CPrintDialog
特    點
對話框

CPrintDialog應用

如果你希望你的應用程序在沒有框架干涉的情況下來處理打印,則可用所提供的構造函數使用“原樣”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

CPrintDialog成員函數

CPrintDialog數據成員

m_pd 用來定製CPrintDialog對話框的結構。

CPrintDialog構造函數

CPrintDialog 構造一個CPrintDialog對話框。

CPrintDialog操作

CreatePrinterDC 創建一個打印機設備環境,但不顯示Print對話框。
DoModal 顯示對話框,並允許用户進行選擇。
GetCopies 獲取所請求的備份數目。
GetDefaults 檢取設備缺省項,但不顯示對話框。
GetDeviceName 檢取當前所選打印設備的名字。
GetDevMode 檢取DEVMODE結構。
GetDriverName 檢取當前所選打印機驅動器的名字。
GetFromPage 檢取打印範圍的起始頁。
GetToPage 檢取打印範圍的結束頁。
GetPortName 檢取當前所選打印機端口名。
GetPrinterDC 檢取設備環境的句柄。
PrintAll 確定是否請求打印文檔的所有頁。
PrintCollate 確定是否請求校對備份。
PrintRange 確定是否只打印指定範圍內的頁。
PrintSelection 確定是否只打印當前所選項。 [1] 
參考資料