PRINTDLGEXW 結構 (commdlg.h)
包含 printDlgEx 函式
語法
typedef struct tagPDEXW {
DWORD lStructSize;
HWND hwndOwner;
HGLOBAL hDevMode;
HGLOBAL hDevNames;
HDC hDC;
DWORD Flags;
DWORD Flags2;
DWORD ExclusionFlags;
DWORD nPageRanges;
DWORD nMaxPageRanges;
LPPRINTPAGERANGE lpPageRanges;
DWORD nMinPage;
DWORD nMaxPage;
DWORD nCopies;
HINSTANCE hInstance;
LPCWSTR lpPrintTemplateName;
LPUNKNOWN lpCallback;
DWORD nPropertyPages;
HPROPSHEETPAGE *lphPropertyPages;
DWORD nStartPage;
DWORD dwResultAction;
} PRINTDLGEXW, *LPPRINTDLGEXW;
成員
lStructSize
類型:DWORD
結構大小,以位元組為單位。
hwndOwner
類型:HWND
擁有屬性表之視窗的句柄。 這個成員必須是有效的視窗句柄;無法 NULL。
hDevMode
類型:HGLOBAL
包含 DEVMODE 結構的可移動全域記憶體物件的句柄。 如果輸入 hDevMode 未 NULL,您必須為 DEVMODE 結構配置可移動的記憶體區塊,並初始化其成員。 PrintDlgEx 函式會使用輸入數據來初始化屬性表中的控制件。 PrintDlgEx 傳回時,DEVMODE 成員會指出使用者的輸入。
如果輸入 hDevModeNULL,PrintDlgEx 配置記憶體給 DEVMODE 結構、初始化其成員以指出使用者的輸入,並傳回識別它的句柄。
如需 hDevMode 和 hDevNames 成員的詳細資訊,請參閱本主題結尾的一節。
hDevNames
類型:HGLOBAL
包含 DEVNAMES 結構的可移動全域記憶體物件的句柄。 如果輸入 hDevNames 未 NULL,您必須為 DEVNAMES 結構配置可移動的記憶體區塊,並初始化其成員。 PrintDlgEx 函式會使用輸入數據來初始化屬性表中的控制件。 PrintDlgEx 傳回時,DEVNAMES 成員會包含使用者所選印表機的資訊。 您可以使用這項資訊來建立裝置內容或信息內容。
hDevNames 成員可以 NULL,在此情況下,PrintDlgEx 為 DEVNAMES 結構配置記憶體、初始化其成員以指出使用者的輸入,並傳回識別它的句柄。
如需 hDevMode 和 hDevNames 成員的詳細資訊,請參閱本主題結尾的一節。
hDC
類型:HDC
裝置內容的句柄或資訊內容,取決於 旗標 成員是否指定 PD_RETURNDC 或 PC_RETURNIC 旗標。 如果未指定這兩個旗標,則這個成員的值是未定義的。 如果指定這兩個旗標,PD_RETURNDC 具有優先權。
Flags
類型:DWORD
一組位旗標,可用來初始化列印 屬性表
為了確保 printDlg 或
為了確保 printDlg 或
從 Windows Vista 開始,當您呼叫
呼叫 GDI 時,您必須忽略 nCopies
價值 | 意義 |
---|---|
|
默認旗標,表示一開始選取 [所有] 單選按鈕 |
|
如果設定此旗標,則會選取 [定序] 複選框。
如果 PrintDlgEx 函式傳回時設定此旗標,則應用程式必須模擬多個複本的定序。 如需詳細資訊,請參閱 PD_USEDEVMODECOPIESANDCOLLATE 旗標的描述。 請參閱 PD_NOPAGENUMS。 |
|
如果設定此旗標,則會選取 [目前頁面] 單選按鈕。 如果未設定 |
|
停用 [列印至檔案] 複選框。 |
|
表示 hInstance 和 lpPrintTemplateName 成員指定取代 General 頁面下半部的預設對話框範本。 預設範本包含與 [列印] 對話框 |
|
表示 hInstance 成員會識別包含預先載入對話框範本的數據區塊。 此範本會取代 [一般] 頁面下半部的預設對話框範本。 系統會使用指定的範本來建立視窗,該視窗是 [一般] 頁面的子系。 如果指定此旗標,系統會忽略 lpPrintTemplateName 成員。 |
|
表示 ExclusionFlags 成員會識別要從印表機驅動程式屬性頁排除的專案。 如果未設定此旗標,預設會從印表機驅動程式屬性頁排除專案。 排除專案可防止 一般 頁面、任何應用程式指定的頁面和印表機驅動程式頁面之間的項目重複。 |
|
隱藏 [列印到檔案] 複選框 |
|
停用 [目前頁面] 單選按鈕 |
|
停用 Pages 單選按鈕和相關聯的編輯控制件。 此外,它會導致對話框中出現 [定序] 複選框。 |
|
停用 [選取範圍] 單選按鈕 |
|
防止發生錯誤時顯示警告訊息。 |
|
如果已設定此旗標,則會選取 [Pages 單選按鈕]。 如果未設定 |
|
如果設定此旗標,則會選取 [列印至檔案] 複選框 |
|
導致 PrintDlgEx 傳回符合使用者在屬性表中所做的選取範圍的裝置內容。 裝置內容會在 hDC中傳回。 |
|
如果設定此旗標,則 PrintDlgEx 函式 |
|
類似於 PD_RETURNDC 旗標,但這個旗標會傳回信息內容,而不是裝置內容。 如果未指定 PD_RETURNDC 或 PD_RETURNIC,輸出上未定義 hDC。 |
|
如果已設定此旗標,則會選取 [選取範圍] 單選按鈕 |
|
與 PD_USEDEVMODECOPIESANDCOLLATE相同。 |
|
此旗標指出您的應用程式是否支援多個複本和定序。 在輸入上設定此旗標,表示您的應用程式不支援多個複本和定序。 在此情況下,nCopiesPRINTDLGEX 結構的成員一律會傳回 1,而且永遠不會在 Flags 成員中設定 PD_COLLATE。
如果未設定此旗標,應用程式會負責列印和整理多個複本。 在此情況下,nCopiesPRINTDLGEX 結構的成員會指出使用者想要列印的複本數目,而 Flags 成員中的 PD_COLLATE 旗標會指出使用者是否想要定序。 不論是否已設定此旗標,應用程式都可以從 nCopies,並 PD_COLLATE 要轉譯的複本數目,以及是否要列印它們定序。 如果設定此旗標且印表機驅動程式不支援多個複本,則會停用 複本 編輯控件。 同樣地,如果設定此旗標且印表機驅動程式不支援定序,則會停用 [定序] 複選框。 dmCopies 和 dmCollateDEVMODE 結構的成員包含印表機驅動程式所使用的複本和定序資訊。 如果已設定此旗標,且印表機驅動程序支援多個複本,則 dmCopies 成員會指出使用者所要求的複本數目。 如果已設定此旗標,且列印機驅動程式支援定序,dmCollateDEVMODE 結構的成員會指出使用者是否想要定序。 如果未設定此旗標,dmCopies 成員一律會傳回 1,而且 dmCollate 成員一律為零。 在 Windows Vista 之前的 Windows 版本中,如果呼叫的應用程式未設定此旗標,且 dmCopiesDEVMODE 結構的成員大於 1,請使用該值做為複本數目:否則,請使用 nCopiesPRINTDLGEX 結構成員的值。 |
|
強制屬性表針對 [一般] 頁面使用大型範本。 較大的範本會為應用程式提供更多空間,這些應用程式會針對 [一般] 頁面的下半部指定自定義範本。 |
Flags2
類型:DWORD
ExclusionFlags
類型:DWORD
一組位旗標,可以從列印 屬性表中的印表機驅動程序屬性
PD_EXCL_COPIESANDCOLLATE
從 印表 屬性表中的印表機驅動程式屬性頁排除 複製 和 Collate 控制件。 當應用程式使用預設 複製 和 Collate 控件時,應該一律設定此旗標,Print 屬性表 [一般] 頁面的下半部所提供。
nPageRanges
類型:DWORD
在輸入時,將此成員設定為 lpPageRanges 陣列中指定的初始頁面範圍數目。 當 printDlgEx 函式傳回
nMaxPageRanges
類型:DWORD
陣列元素中 lpPageRanges 緩衝區的大小。 這個值表示可以儲存在陣列中的頁面範圍數目上限。 如果指定 PD_NOPAGENUMS 旗標,這個值無效。 如果未指定 PD_NOPAGENUMS 旗標,這個值必須大於零。
lpPageRanges
類型:LPPRINTPAGERANGE
緩衝區的指標,其中包含 PRINTPAGERANGE 結構的
nMinPage
類型:DWORD
Pages 編輯控制項中指定的頁面範圍最小值。 如果指定 PD_NOPAGENUMS 旗標,這個值無效。
nMaxPage
類型:DWORD
Pages 編輯控制件中指定的頁面範圍最大值。 如果指定 PD_NOPAGENUMS 旗標,這個值無效。
nCopies
類型:DWORD
如果 hDevMode為 NULL,則包含 複製 編輯控件的初始複本數目;否則,dmCopiesDEVMODE 結構的成員包含初始值。 PrintDlgEx 傳回時,nCopies 包含應用程式必須列印的實際複本數目。 此值取決於應用程式或印表機驅動程式是否負責列印多個複本。 如果在 Flags 成員中設定 PD_USEDEVMODECOPIESANDCOLLATE 旗標,nCopies 一律會傳回 1,而且列印機驅動程式會負責列印多個複本。 如果未設定旗標,應用程式會負責列印 nCopies 所指定的複本數目,。 如需詳細資訊,請參閱 PD_USEDEVMODECOPIESANDCOLLATE 旗標的描述。
hInstance
類型:HINSTANCE
如果在 Flags 成員中設定 PD_ENABLEPRINTTEMPLATE 旗標,hInstance 是包含 lpPrintTemplateName 成員所命名之對話框範本的應用程式或模組實例句柄。 如果在 Flags 成員中設定 PD_ENABLEPRINTTEMPLATEHANDLE 旗標,hInstance 是包含對話框範本的記憶體物件句柄。 如果 Flags 成員中未設定兩個範本旗標,hInstance 應該 NULL。
lpPrintTemplateName
類型:LPCTSTR
hInstance 成員所識別之模組中的對話框範本資源名稱。 此範本會取代 [一般] 頁面下半部的預設對話框範本。 預設範本包含與 [列印] 對話框
lpCallback
類型:LPUNKNOWN
應用程式定義回呼物件的指標。
對象應該包含 IPrintDialogCallback 類別,以在 General 頁面的下半部接收子對話框的訊息。
回呼物件也應該包含 IObjectWithSite 類別,以接收 IPrintDialogServices 介面的指標。 PrintDlgEx 函式會在回呼 IID_IObjectWithSiteIID_IPrintDialogCallback 物件上呼叫 IUnknown::QueryInterface,以判斷支援哪些介面。
如果您不想擷取任何回呼資訊,請將 lpCallback 設定為 NULL。
nPropertyPages
類型:DWORD
lphPropertyPage s 陣列中的屬性頁句柄數目。
lphPropertyPages
類型:HPROPSHEETPAGE*
包含屬性頁句柄陣列,以新增至 Print 屬性表。 其他屬性頁會遵循 [一般] 頁面
nStartPage
類型:DWORD
最初顯示的屬性頁。 若要顯示 [一般] 頁面,請指定 START_PAGE_GENERAL。 否則,請在 lphPropertyPages 成員中指定的陣列中,指定屬性頁的以零起始的索引。 為了保持一致性,建議您一律在 [一般] 頁面上啟動屬性表。
dwResultAction
類型:DWORD
在輸入上,將此成員設定為零。 如果 printDlgEx 函式
PD_RESULT_APPLY
用戶按兩下 [套用]
PD_RESULT_CANCEL
用戶按兩下 [取消] 按鈕
PD_RESULT_PRINT
用戶按兩下 [列印] 按鈕
言論
如果 hDevMode 和 hDevNames 都 NULL,PrintDlgEx 使用目前的預設印表機初始化屬性表。 若要初始化不同印表機的屬性表,請使用 wDeviceOffsetDEVNAMES 結構的成員來指定印表機的名稱。
請注意,dmDeviceNameDEVMODE 結構的成員也會指定印表機名稱。 不過,
如果已設定PD_RETURNDEFAULT旗標,且 hDevMode 和 hDevNames 都會 NULL,PrintDlgEx 會使用 hDevNames 和 hDevMode 成員傳回目前預設列印機的相關信息,而不顯示對話框。
在執行
注意
commdlg.h 標頭會根據 UNICODE 預處理器常數的定義,將 PRINTDLGEX 定義為自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱函式原型的
要求
要求 | 價值 |
---|---|
最低支援的用戶端 | Windows 2000 Professional [僅限傳統型應用程式] |
支援的最低伺服器 | Windows 2000 Server [僅限傳統型應用程式] |
標頭 | commdlg.h (包括 Windows.h) |
另請參閱
概念
參考