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
指示千分之一英寸是边距和纸张大小的度量单位。 rtMarginrtMinMarginptPaperSize 成员中的值以千分之一英寸为单位。 可以在输入时设置此标志,以替代用户区域设置的默认度量单位。 当函数返回时,对话框会设置此标志以指示所使用的单位。
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