EXTPUSH 结构 (compstui.h)
EXTPUSH 结构由 CPSUI 应用程序使用, (包括打印机接口 DLL) ,用于指定扩展按钮,该按钮可以添加到属性表页选项。 按下按钮后,可以显示一个新对话框。
语法
typedef struct _EXTPUSH {
WORD cbSize;
WORD Flags;
LPTSTR pTitle;
union {
DLGPROC DlgProc;
FARPROC pfnCallBack;
} DUMMYUNIONNAME;
ULONG_PTR IconID;
union {
WORD DlgTemplateID;
HANDLE hDlgTemplate;
} DUMMYUNIONNAME2;
ULONG_PTR dwReserved[3];
} EXTPUSH, *PEXTPUSH;
成员
cbSize
EXTPUSH 结构的大小(以字节为单位)。
Flags
位标志,可以是以下值之一:
标志 | 描述 |
---|---|
EPF_ICONID_AS_HICON | 如果设置, IconID 成员包含图标句柄。 如果未设置, IconID 成员包含图标资源标识符。 |
EPF_INCLUDE_SETUP_TITLE | 如果已设置,CPSUI 会将“Setup”追加到 pTitle 指向的字符串。 |
EPF_NO_DOT_DOT_DOT | 如果已设置,CPSUI 不会追加“...”到 pTitle 指向的字符串。 |
EPF_OVERLAY_NO_ICON | 如果已设置,CPSUI 会将其IDI_CPSUI_NO图标覆盖到 IconID 成员标识的图标上。 |
EPF_OVERLAY_STOP_ICON | 如果已设置,CPSUI 会将IDI_CPSUI_STOP图标覆盖到 IconID 成员标识的图标上。 |
EPF_OVERLAY_WARNING_ICON | 如果已设置,CPSUI 会将其IDI_CPSUI_WARNING图标覆盖到 IconID 成员标识的图标上。 |
EPF_PUSH_TYPE_DLGPROC | 如果已设置, 则 DlgProc 和 DlgTemplateID/hDlgTemplate 成员有效。 如果未设置, 则 pfnCallBack 成员有效。 |
EPF_USE_HDLGTEMPLATE | 如果已设置, 则 hDlgTemplate 包含模板句柄。 如果未设置, 则 DlgTemplateID 包含模板资源标识符。 |
pTitle
字符串标识符,表示按钮标题。 这可以是指向以 NULL 结尾的字符串的 32 位指针,也可以是 HIWORD 设置为零的 16 位字符串资源标识符。
DUMMYUNIONNAME
定义 DUMMYUNIONNAME 联合。
DUMMYUNIONNAME.DlgProc
DLGPROC 类型的指针指向对话框过程,用于处理按钮对话框的消息。 有关使用 DialogProc 的详细信息,请参阅下面的 “备注 ”部分。
如果提供此指针,则必须在 Flags 中设置EPF_PUSH_TYPE_DLGPROC。
DUMMYUNIONNAME.pfnCallBack
指向 _CPSUICALLBACK类型的回调函数的指针,用于处理CPSUICB_REASON_PUSHBUTTON原因。 有关更多信息,请参见下面的“备注”部分。
如果提供此指针,则必须在 Flags 中清除EPF_PUSH_TYPE_DLGPROC。
IconID
以下图标标识符之一:
图标资源标识符。 它可以是应用程序定义的,也可以是 CPSUI 提供的IDI_CPSUI前缀图标资源标识符之一。
图标句柄。 如果指定了句柄,则必须在 Flags 成员中设置EPF_ICONID_AS_HICON。
CPSUI 显示按钮旁边的图标。 如果此值为零,则不显示图标。
DUMMYUNIONNAME2
定义 DUMMYUNIONNAME2 联合。
DUMMYUNIONNAME2.DlgTemplateID
指定对话框的资源 ID。
如果 DlgTemplateID = 0,则公共 UI 将使用以下参数调用 DlgProc :
DlgProc(hDlg, WM_USER, NULL, (LPARAM)pCPSUICBParam);
DUMMYUNIONNAME2.hDlgTemplate
将用于弹出对话框的 DLGTEMPLATE 的句柄。
dwReserved[3]
保留, 必须初始化为零。
注解
扩展按钮是 CPSUI 定义的按钮类型,可与 OPTITEM 结构相关联。 OPTITEM 结构可以有一个扩展按钮或一个与之关联的扩展检查框。
使用 EXTPUSH 结构创建按钮时,可以选择创建当用户单击按钮时打开的附加对话框。 若要创建此对话框,应在 DlgProc 成员中指定指向对话框过程的指针,并在 DlgTemplateID 或 hDlgTemplate 成员中包含对话框模板规范。
如果在 Flags 中设置了EPF_USE_HDLGTEMPLATE,CPSUI 将通过调用 DialogBoxIndirectParam 并传递 DlgProc 和 hDlgTemplate 成员的内容来创建对话框。
如果未在 Flags 中设置EPF_USE_HDLGTEMPLATE,CPSUI 将通过调用 DialogBoxParam 并传递 DlgProc 和 DlgTemplateID 成员的内容来创建对话框。
当使用 uMsg 值为 WM_INITDIALOG 调用对话框过程时, lParam 值是 CPSUICBPARAM 结构的地址,其中 Reason 成员设置为 CPSUICB_REASON_EXTPUSH。 有关 uMsg 和 lParam 参数的详细信息,请参阅 DialogProc。
如果用户单击按钮时不需要 CPSUI 显示对话框,则可以在 pfnCallBack 成员中指定_CPSUICALLBACK类型回调函数的地址。 当用户单击按钮时,CPSUI 将调用回调函数。 随附的 CPSUICBPARAM 结构的 Reason 成员将设置为 CPSUICB_REASON_EXTPUSH。
要求
要求 | 值 |
---|---|
Header | compstui.h (包括 Compstui.h) |