分享方式:


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。

如果您未為 hDevModehDevNames 成員提供自己的句柄m_pdex,請務必在完成對話框時,針對這些句柄呼叫 Windows 函GlobalFree式。

初始化對話框控件之後,請呼叫 DoModal 成員函式以顯示對話框,並允許用戶選取列印選項。 當傳回時 DoModal ,您可以判斷使用者是否已選取 [確定]、[套用] 或 [取消] 按鈕。

如果使用者按下 [確定],您可以使用 CPrintDialogEx的成員函式來擷取使用者輸入的資訊。

成員 CPrintDialogEx::GetDefaults 函式適用於擷取目前的印表機預設值,而不顯示對話方塊。 此方法不需要用戶互動。

您可以使用 Windows CommDlgExtendedError 函式來判斷對話方塊初始化期間是否發生錯誤,以及深入瞭解錯誤。 如需此函式的詳細資訊,請參閱 Windows SDK。

如需使用 CPrintDialogEx的詳細資訊,請參閱 通用對話框類別

繼承階層架構

CObject

CCmdTarget

CWnd

CDialog

IObjectWithSite

IPrintDialogCallback

CCommonDialog

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

DEVMODEDEVNAMES 結構建立印表機裝置內容 (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。

備註

DEVMODEDEVNAMES 結構建立印表機裝置內容 (DC)。

GetDefaults 不會顯示 Print 屬性表。 相反地,它會設定 m_pdex 的 和 成員,以處理為系統預設印表機初始化的 DEVMODEDEVNAMES 結構。hDevMode hDevNames hDevNameshDevMode 都必須是 NULL,或GetDefaults失敗。

如果已設定PD_RETURNDC旗標,此函式不僅會將 和 hDevMode (位於 m_pdex.hDevNamesm_pdex.hDevMode) 傳回hDevNames給呼叫者,也會在 中m_pdex.hDC傳回印表機 DC。 呼叫端負責刪除印表機 DC,並在完成CPrintDialogEx物件時呼叫句柄上的 Windows GlobalFree 函式。

CPrintDialogEx::GetDeviceName

呼叫 DoModal 以擷取目前選取的印表機名稱,或在呼叫 GetDefaults 以擷取預設印表機的名稱之後呼叫此函式。

CString GetDeviceName() const;

傳回值

目前選取之印表機的名稱。

備註

使用 所傳回之 物件的指標CString做為 CDC::CreateDC 呼叫中的 值lpszDeviceNameGetDeviceName

CPrintDialogEx::GetDevMode

呼叫 DoModalGetDefaults 之後呼叫此函式,以擷取列印裝置的相關信息。

LPDEVMODE GetDevMode() const;

傳回值

DEVMODE 數據結構,其中包含列印驅動程式之裝置初始化和環境的相關信息。 您必須使用 Windows SDK 中所述的 Windows GlobalUnlock 函式來解除鎖定這個結構所取得的記憶體。

CPrintDialogEx::GetDriverName

呼叫 DoModalGetDefaults 之後呼叫此函式,以擷取系統定義的印表機設備驅動器名稱。

CString GetDriverName() const;

傳回值

CString,指定系統定義的驅動程式名稱。

備註

在呼叫 CDC::CreateDC 時,使用 所GetDriverName傳回之 物件的指標CString做為 lpszDriverName 的值

CPrintDialogEx::GetPortName

呼叫 DoModalGetDefaults 之後呼叫此函式,以擷取目前選取的印表機埠名稱。

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來判斷指定的頁面範圍(請參閱 nPageRangesWindows SDK 中的 PRINTDLGEX 結構中的nMaxPageRangeslpPageRanges

CPrintDialogEx::P rintSelection

呼叫之後呼叫 DoModal 此函式,以判斷是否只列印目前選取的專案。

BOOL PrintSelection() const;

傳回值

如果只列印選取的專案,則為TRUE;否則為 FALSE。

另請參閱

CCommonDialog 類別
階層架構圖表
CPrintInfo 結構