CPrintDialogEx 類別
封裝 Windows Print 屬性表所提供的服務。
語法
class CPrintDialogEx : public CCommonDialog
成員
公用建構函式
名稱 | 描述 |
---|---|
CPrintDialogEx::CPrintDialogEx | 建構 CPrintDialogEx 物件。 |
公用方法
名稱 | 描述 |
---|---|
CPrintDialogEx::CreatePrinterDC | 建立印表機裝置內容,而不顯示 [列印] 對話框。 |
CPrintDialogEx::D oModal | 顯示對話框,並允許用戶進行選取。 |
CPrintDialogEx::GetCopies | 擷取所要求的複本數目。 |
CPrintDialogEx::GetDefaults | 擷取裝置預設值而不顯示對話框。 |
CPrintDialogEx::GetDeviceName | 擷取目前選取的印表機裝置名稱。 |
CPrintDialogEx::GetDevMode | 擷取 DEVMODE 結構。 |
CPrintDialogEx::GetDriverName | 擷取系統定義印表機設備驅動器的名稱。 |
CPrintDialogEx::GetPortName | 擷取目前選取之印表機埠的名稱。 |
CPrintDialogEx::GetPrinterDC | 擷取印表機裝置內容的句柄。 |
CPrintDialogEx::P rintAll | 判斷是否列印檔的所有頁面。 |
CPrintDialogEx::P rintCollate | 判斷是否要求定序複本。 |
CPrintDialogEx::P rintCurrentPage | 決定是否要列印檔的目前頁面。 |
CPrintDialogEx::P rintRange | 判斷是否只列印指定的頁面範圍。 |
CPrintDialogEx::P rintSelection | 判斷是否只列印目前選取的專案。 |
公用資料成員
名稱 | 描述 |
---|---|
CPrintDialogEx::m_pdex | 用來自定義 CPrintDialogEx 對象的結構。 |
備註
您可以依賴架構來處理應用程式的列印程式的許多層面。 如需使用架構來處理列印工作的詳細資訊,請參閱列印一文。
如果您想要讓應用程式在不涉及架構的情況下處理列印,您可以使用 CPrintDialogEx
類別 「如同目前」搭配提供的建構函式,或者您可以從衍生自己的對話類別 CPrintDialogEx
,並撰寫建構函式以符合您的需求。 不論是哪一種情況,這些對話框的行為都會像標準 MFC 對話框一樣,因為它們衍生自 類別 CCommonDialog
。
若要使用 CPrintDialogEx
物件,請先使用 建 CPrintDialogEx
構函式建立 物件。 建構對話框之後,您可以設定或修改m_pdex結構中的任何值,以初始化對話框控件的值。 結構 m_pdex
的類型 為 PRINTDLGEX。 如需此結構的詳細資訊,請參閱 Windows SDK。
如果您未為 hDevMode
和 hDevNames
成員提供自己的句柄m_pdex
,請務必在完成對話框時,針對這些句柄呼叫 Windows 函GlobalFree
式。
初始化對話框控件之後,請呼叫 DoModal
成員函式以顯示對話框,並允許用戶選取列印選項。 當傳回時 DoModal
,您可以判斷使用者是否已選取 [確定]、[套用] 或 [取消] 按鈕。
如果使用者按下 [確定],您可以使用 CPrintDialogEx
的成員函式來擷取使用者輸入的資訊。
成員 CPrintDialogEx::GetDefaults
函式適用於擷取目前的印表機預設值,而不顯示對話方塊。 此方法不需要用戶互動。
您可以使用 Windows CommDlgExtendedError
函式來判斷對話方塊初始化期間是否發生錯誤,以及深入瞭解錯誤。 如需此函式的詳細資訊,請參閱 Windows SDK。
如需使用 CPrintDialogEx
的詳細資訊,請參閱 通用對話框類別。
繼承階層架構
IObjectWithSite
IPrintDialogCallback
CPrintDialogEx
需求
標頭: afxdlgs.h
CPrintDialogEx::CPrintDialogEx
建構 Windows Print 屬性表。
CPrintDialogEx(
DWORD dwFlags = PD_ALLPAGES | PD_USEDEVMODECOPIES | PD_NOPAGENUMS | PD_HIDEPRINTTOFILE | PD_NOSELECTION | PD_NOCURRENTPAGE,
CWnd* pParentWnd = NULL);
參數
dwFlags
您可以使用一或多個旗標來自定義對話框的設定,並結合位 OR 運算元。 例如,PD_ALLPAGES旗標會將預設列印範圍設定為檔的所有頁面。 如需這些旗標的詳細資訊,請參閱 Windows SDK 中的 PRINTDLGEX 結構。
pParentWnd
對話框父視窗或擁有者視窗的指標。
備註
這個成員函式只會建構物件。 DoModal
使用成員函式來顯示對話框。
CPrintDialogEx::CreatePrinterDC
從 DEVMODE 和 DEVNAMES 結構建立印表機裝置內容 (DC)。
HDC CreatePrinterDC();
傳回值
處理新建立的印表機裝置內容。
備註
傳回的 DC 也會儲存在 hDC
m_pdex 的成員中。
此 DC 假設為目前的印表機 DC,而且必須刪除任何其他先前取得的印表機 DC。 您可以呼叫此函式,並使用產生的 DC,而不會顯示 [列印] 對話方塊。
CPrintDialogEx::D oModal
呼叫此函式以顯示 Windows Print 屬性表,並允許使用者選取各種列印選項,例如複本數目、頁面範圍,以及是否應該定序複本。
virtual INT_PTR DoModal();
傳回值
INT_PTR傳回值實際上是 HRESULT。 請參閱 Windows SDK 中 PrintDlgEx 中的傳回值一節。
備註
如果您要藉由設定 結構的成員 m_pdex
來初始化各種列印對話框選項,您應該先執行此動作,再呼叫 DoModal
,但在建構對話對象之後。
呼叫 DoModal
之後,您可以呼叫其他成員函式,將用戶的設定或資訊輸入擷取到對話框中。
如果在呼叫 DoModal
時使用PD_RETURNDC旗標,則會在 m_pdex 的成員中hDC
傳回印表機 DC。 此 DC 必須透過 的呼叫者CPrintDialogEx
呼叫 DeleteDC 來釋放。
CPrintDialogEx::GetCopies
呼叫 之後呼叫 DoModal
此函式,以擷取所要求的複本數目。
int GetCopies() const;
傳回值
要求的複本數目。
CPrintDialogEx::GetDefaults
呼叫此函式以擷取預設印表機的裝置預設值,而不顯示對話框。
BOOL GetDefaults();
傳回值
如果成功,則為TRUE,否則為 FALSE。
備註
從 DEVMODE 和 DEVNAMES 結構建立印表機裝置內容 (DC)。
GetDefaults
不會顯示 Print 屬性表。 相反地,它會設定 m_pdex 的 和 成員,以處理為系統預設印表機初始化的 DEVMODE 和 DEVNAMES 結構。hDevMode
hDevNames
hDevNames
和 hDevMode
都必須是 NULL,或GetDefaults
失敗。
如果已設定PD_RETURNDC旗標,此函式不僅會將 和 hDevMode
(位於 m_pdex.hDevNames
和m_pdex.hDevMode
) 傳回hDevNames
給呼叫者,也會在 中m_pdex.hDC
傳回印表機 DC。 呼叫端負責刪除印表機 DC,並在完成CPrintDialogEx
物件時呼叫句柄上的 Windows GlobalFree 函式。
CPrintDialogEx::GetDeviceName
呼叫 DoModal 以擷取目前選取的印表機名稱,或在呼叫 GetDefaults 以擷取預設印表機的名稱之後呼叫此函式。
CString GetDeviceName() const;
傳回值
目前選取之印表機的名稱。
備註
使用 所傳回之 物件的指標CString
做為 CDC::CreateDC 呼叫中的 值lpszDeviceName
。GetDeviceName
CPrintDialogEx::GetDevMode
呼叫 DoModal 或 GetDefaults 之後呼叫此函式,以擷取列印裝置的相關信息。
LPDEVMODE GetDevMode() const;
傳回值
DEVMODE 數據結構,其中包含列印驅動程式之裝置初始化和環境的相關信息。 您必須使用 Windows SDK 中所述的 Windows GlobalUnlock 函式來解除鎖定這個結構所取得的記憶體。
CPrintDialogEx::GetDriverName
呼叫 DoModal 或 GetDefaults 之後呼叫此函式,以擷取系統定義的印表機設備驅動器名稱。
CString GetDriverName() const;
傳回值
CString
,指定系統定義的驅動程式名稱。
備註
在呼叫 CDC::CreateDC 時,使用 所GetDriverName
傳回之 物件的指標CString
做為 lpszDriverName 的值。
CPrintDialogEx::GetPortName
呼叫 DoModal 或 GetDefaults 之後呼叫此函式,以擷取目前選取的印表機埠名稱。
CString GetPortName() const;
傳回值
目前選取之印表機埠的名稱。
CPrintDialogEx::GetPrinterDC
傳回印表機裝置內容的句柄。
HDC GetPrinterDC() const;
傳回值
印表機裝置內容的句柄。
備註
當您完成使用 Windows DeleteDC 函式時,您必須呼叫 Windows DeleteDC 函式來刪除裝置內容。
CPrintDialogEx::m_pdex
PRINTDLGEX 結構,其成員會儲存對話物件的特性。
PRINTDLGEX m_pdex;
備註
建 CPrintDialogEx
構 物件之後,您可以使用 m_pdex
來設定對話框的各個層面,再呼叫 DoModal 成員函式。 如需 結構的詳細資訊 m_pdex
,請參閱 Windows SDK 中的 PRINTDLGEX 。
如果您直接修改 m_pdex
數據成員,則會覆寫任何默認行為。
CPrintDialogEx::P rintAll
呼叫 之後呼叫 DoModal
此函式,以判斷是否要列印檔中的所有頁面。
BOOL PrintAll() const;
傳回值
如果要列印檔中的所有頁面,則為TRUE;否則為 FALSE。
CPrintDialogEx::P rintCollate
呼叫之後呼叫 DoModal
此函式,以判斷印表機是否應該整理檔的所有列印複本。
BOOL PrintCollate() const;
傳回值
如果使用者在對話框中選取定序複選框,則為TRUE;否則為 FALSE。
CPrintDialogEx::P rintCurrentPage
呼叫之後呼叫 DoModal
此函式,以判斷是否要列印檔中的目前頁面。
BOOL PrintCurrentPage() const;
傳回值
如果在 列印對話框中選取 [列印目前頁面 ],則為 TRUE;否則為 FALSE。
CPrintDialogEx::P rintRange
呼叫之後呼叫 DoModal
此函式,以判斷是否只列印檔中的一系列頁面。
BOOL PrintRange() const;
傳回值
如果檔中只有一系列頁面要列印,則為TRUE;否則為 FALSE。
備註
您可以從m_pdex來判斷指定的頁面範圍(請參閱 nPageRanges
Windows SDK 中的 PRINTDLGEX 結構中的、 nMaxPageRanges
和 lpPageRanges
。
CPrintDialogEx::P rintSelection
呼叫之後呼叫 DoModal
此函式,以判斷是否只列印目前選取的專案。
BOOL PrintSelection() const;
傳回值
如果只列印選取的專案,則為TRUE;否則為 FALSE。