PAGESETUPDLGA 結構 (commdlg.h)

包含 PageSetupDlg 函式用來初始化 [頁面設定 ] 對話框的資訊。 使用者關閉對話框之後,系統會傳回此結構中使用者定義頁面參數的相關信息。

語法

typedef struct tagPSDA {
  DWORD           lStructSize;
  HWND            hwndOwner;
  HGLOBAL         hDevMode;
  HGLOBAL         hDevNames;
  DWORD           Flags;
  POINT           ptPaperSize;
  RECT            rtMinMargin;
  RECT            rtMargin;
  HINSTANCE       hInstance;
  LPARAM          lCustData;
  LPPAGESETUPHOOK lpfnPageSetupHook;
  LPPAGEPAINTHOOK lpfnPagePaintHook;
  LPCSTR          lpPageSetupTemplateName;
  HGLOBAL         hPageSetupTemplate;
} PAGESETUPDLGA, *LPPAGESETUPDLGA;

成員

lStructSize

類型: DWORD

這個 結構的大小,以位元組為單位。

hwndOwner

類型: HWND

擁有對話框之視窗的句柄。 此成員可以是任何有效的視窗句柄,如果對話框沒有擁有者,則為 NULL

hDevMode

類型: HGLOBAL

包含 DEVMODE 結構的全域記憶體物件的句柄。 在輸入上,如果指定句柄,則會使用對應 DEVMODE 結構中的值來初始化對話框中的控件。 在輸出時,對話框會將 hDevMode 設定為 DEVMODE 結構的全域記憶體句柄,其中包含指定使用者選取範圍的值。 如果使用者的選取項目無法使用,對話框會將 hDevMode 設定為 NULL

hDevNames

類型: HGLOBAL

包含 DEVNAMES 結構的全域記憶體物件的句柄。 此結構包含三個字串,指定驅動程式名稱、印表機名稱和輸出埠名稱。 在輸入上,如果指定句柄,則會使用對應 DEVNAMES 結構中的字串來初始化對話方塊中的控制件。 在輸出時,對話框會將 hDevNames 設定為 DEVNAMES 結構的全域記憶體句柄,該結構包含指定使用者選取專案的字串。 如果使用者的選取項目無法使用,對話框會將 hDevNames 設定為 NULL

Flags

類型: DWORD

一組可用來初始化 [頁面設定 ] 對話框的位旗標。 當對話框傳回時,它會設定這些旗標來指出用戶的輸入。 這個成員可以是下列一或多個值。

意義
PSD_DEFAULTMINMARGINS
0x00000000
設定使用者可以為頁面邊界指定的最小值,做為印表機允許的最小邊界。 此為預設值。 如果同時指定 PSD_MARGINSPSD_MINMARGINS 旗標,則會忽略此旗標。
PSD_DISABLEMARGINS
0x00000010
停用邊界控制件,防止使用者設定邊界。
PSD_DISABLEORIENTATION
0x00000100
停用方向控制件,防止使用者設定頁面方向。
PSD_DISABLEPAGEPAINTING
0x00080000
防止對話框繪製範例頁面的內容。 如果您啟用 PagePaintHook 攔截程式,您仍然可以繪製範例頁面的內容。
PSD_DISABLEPAPER
0x00000200
停用紙張控件,防止用戶設定頁面參數,例如紙張大小和來源。
PSD_DISABLEPRINTER
0x00000020
已過時。

Windows XP/2000: 停用 [印表機] 按鈕,防止使用者叫用包含其他印表機設定資訊的對話框。

PSD_ENABLEPAGEPAINTHOOK
0x00040000
啟用 lpfnPagePaintHook 成員中指定的攔截程式。
PSD_ENABLEPAGESETUPHOOK
0x00002000
啟用 lpfnPageSetupHook 成員中指定的攔截程式。
PSD_ENABLEPAGESETUPTEMPLATE
0x00008000
指出 hInstancelpPageSetupTemplateName 成員會指定要用來取代預設範本的對話框範本。
PSD_ENABLEPAGESETUPTEMPLATEHANDLE
0x00020000
指出 hPageSetupTemplate 成員會識別包含預先載入對話框範本的數據區塊。 如果指定此旗標,系統會忽略 lpPageSetupTemplateName 成員。
PSD_INHUNDREDTHSOFMILLIMETERS
0x00000008
表示百分之一公厘是邊界和紙張大小的度量單位。 rtMarginrtMinMarginptPaperSize 成員中的值以百分之一公厘為單位。 您可以在輸入上設定此旗標,以覆寫用戶地區設定的預設度量單位。 當函式傳回時,對話框會設定此旗標來指出所使用的單位。
PSD_INTHOUSANDTHSOFINCHES
0x00000004
表示千分之一英吋是邊界和紙張大小的度量單位。 rtMargin、rtMinMarginptPaperSize 成員中的值以千分之一英吋為單位。 您可以在輸入上設定此旗標,以覆寫用戶地區設定的預設度量單位。 當函式傳回時,對話框會設定此旗標來指出所使用的單位。
PSD_INWININIINTLMEASURE
0x00000000
保留的。
PSD_MARGINS
0x00000002
讓系統使用 rtMargin 成員中指定的值做為左、上、右和下邊界的初始寬度。 如果未設定 PSD_MARGINS ,系統會將所有邊界的初始寬度設定為1英吋。
PSD_MINMARGINS
0x00000001
讓系統使用 rtMinMargin 成員中指定的值,做為左邊界、上邊界、右邊界的最小允許寬度。 系統可防止使用者輸入小於指定最小值的寬度。 如果未指定 PSD_MINMARGINS ,系統會將允許的最小寬度設定為印表機所允許的寬度下限。
PSD_NONETWORKBUTTON
0x00200000
隱藏並停用 [ 網络 ] 按鈕。
PSD_NOWARNING
0x00000080
當沒有預設印表機時,防止系統顯示警告訊息。
PSD_RETURNDEFAULT
0x00000400

PageSetupDlg 不會顯示對話框。 相反地,它會設定 hDevNameshDevMode 成員來處理針對系統預設印表機初始化的 DEVMODEDEVNAMES 結構。 如果 hDevNameshDevMode 不是 NULL,PageSetupDlg 會傳回錯誤。

PSD_SHOWHELP
0x00000800
導致對話框顯示 [ 說明 ] 按鈕。 hwndOwner 成員必須指定視窗,以接收當使用者按兩下 [說明] 按鈕時,對話框所傳送的 HELPMSGSTRING 已註冊訊息。

ptPaperSize

類型: POINT

用戶所選取紙張的維度。 PSD_INTHOUSANDTHSOFINCHESPSD_INHUNDREDTHSOFMILLIMETERS旗標表示度量單位。

rtMinMargin

類型: RECT

左邊界、上邊界、右邊界的最小允許寬度。 如果未設定PSD_MINMARGINS旗標 系統會忽略此成員。 這些值必須小於或等於 rtMargin 成員中指定的值。 PSD_INTHOUSANDTHSOFINCHESPSD_INHUNDREDTHSOFMILLIMETERS旗標表示度量單位。

rtMargin

類型: RECT

左、上、右和下邊界的寬度。 如果您設定 PSD_MARGINS 旗標, rtMargin 會指定初始邊界值。 當 PageSetupDlg 傳回時, rtMargin 會包含用戶選取的邊界寬度。 PSD_INHUNDREDTHSOFMILLIMETERSPSD_INTHOUSANDTHSOFINCHES旗標表示度量單位。

hInstance

類型: HINSTANCE

如果在 Flags 成員中設定PSD_ENABLEPAGESETUPTEMPLATE旗標,hInstance 是包含 lpPageSetupTemplateName 成員所命名之對話框範本的應用程式或模組實例句柄。

lCustData

類型: LPARAM

系統傳遞至 lpfnPageSetupHook 成員所識別的攔截程式的應用程式定義數據。 當系統將 WM_INITDIALOG 訊息傳送至攔截程式時,訊息的 lParam 參數是建立對話框時所指定的 PAGESETUPDLG 結構的指標。 攔截程式可以使用這個指標來取得 lCustData 值。

lpfnPageSetupHook

類型: LPPAGESETUPHOOK

PageSetupHook 攔截程式的指標,可處理用於對話框的訊息。 除非在 Flags 成員中設定PSD_ENABLEPAGESETUPHOOK旗標,否則會忽略此成員。

lpfnPagePaintHook

類型: LPPAGEPAINTHOOK

PagePaintHook 攔截程式的指標,每當重新繪製範例頁面時,就會從對話框中接收WM_PSD_* 訊息。 藉由處理訊息,攔截程式可以自定義範例頁面的外觀。 除非在 Flags 成員中設定PSD_ENABLEPAGEPAINTHOOK旗標,否則會忽略此成員。

lpPageSetupTemplateName

類型: LPCTSTR

hInstance 成員所識別之模組中的對話框範本資源名稱。 此範本會取代標準對話框範本。 對於編號的對話框資源, lpPageSetupTemplateName 可以是 MAKEINTRESOURCE 宏所傳回的值。 除非在 Flags 成員中設定PSD_ENABLEPAGESETUPTEMPLATE旗標,否則會忽略此成員。

hPageSetupTemplate

類型: HGLOBAL

如果在 Flags 成員中設定PSD_ENABLEPAGESETUPTEMPLATEHANDLE旗標,hPageSetupTemplate 是包含對話框範本的記憶體物件的句柄。

備註

如果未指定 PSD_INHUNDREDTHSOFMILLIMETERSPSD_INTHOUSANDTHSOFINCHES 旗標,系統會查詢預設用戶地區設定的 LOCALE_IMEASURE 值,以判斷 (百分之一公厘或千分之一英吋的測量單位,) 邊界寬度和紙張大小。

如果 hDevNameshDevMode 都有有效的句柄,而且 DEVNAMES 結構的 wDeviceOffset 成員所指定的印表機名稱與 DEVMODE 結構的 dmDeviceName 成員所指定的名稱不同,則系統預設會使用 wDeviceOffset 所指定的名稱。

注意

commdlg.h 標頭會將 PAGESETUPDLG 定義為別名,根據 UNICODE 預處理器常數的定義,自動選取此函式的 ANSI 或 Unicode 版本。 混合使用編碼中性別名與非編碼中性的程序代碼,可能會導致編譯或運行時間錯誤不符。 如需詳細資訊,請參閱 函式原型的慣例

規格需求

需求
最低支援的用戶端 Windows 2000 Professional [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限桌面應用程式]
標頭 commdlg.h (包含 Windows.h)

另請參閱

通用對話框連結庫

概念

DEVMODE

DEVNAMES

MAKEINTRESOURCE

其他資源

PagePaintHook

PageSetupDlg

PageSetupHook

參考

WM_INITDIALOG