EXTPUSH 结构 (compstui.h)
CPSUI 应用程序(包括打印机接口 DLL)使用 EXTPUSH 结构来指定扩展的按下按钮,该按钮可以添加到属性表页选项。 按下按钮后,可以显示新对话框。
语法
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 位指针,也可以是 16 位字符串资源标识符,HIWORD 设置为零。
DUMMYUNIONNAME
定义 DUMMYUNIONNAME 联合。
DUMMYUNIONNAME.DlgProc
DLGPROC 类型的指针指向对话框过程,以处理按钮对话框的消息。 有关使用 DialogProc的详细信息,请参阅下面的 备注 部分。
如果提供了此指针,则必须在 标志中设置EPF_PUSH_TYPE_DLGPROC。
DUMMYUNIONNAME.pfnCallBack
指向 _CPSUICALLBACK类型回调函数的指针,用于处理CPSUICB_REASON_PUSHBUTTON原因。 有关详细信息,请参阅以下“备注”部分。
如果提供了此指针,则必须在 标志中清除EPF_PUSH_TYPE_DLGPROC。
IconID
以下图标标识符之一:
图标资源标识符。 这可以是应用程序定义的,也可以是 CPSUI 提供的、IDI_CPSUI前缀的图标资源标识符之一。
图标句柄。 如果指定句柄,则必须在 标志 成员中设置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 成员中包含对话框模板规范。
如果在 标志中设置EPF_USE_HDLGTEMPLATE,则 CPSUI 通过调用 dialogBoxIndirectParam来创建对话框,传递 DlgProc 和 hDlgTemplate 成员的内容。
如果未在 标志中设置EPF_USE_HDLGTEMPLATE,则 CPSUI 通过调用 dialogBoxParam、传递 DlgProc 和 DlgTemplateID 成员的内容来创建对话框。
使用 WM_INITDIALOG uMsg 值调用对话框过程时,lParam 值是 CPSUICBPARAM 结构的地址,Reason 成员设置为CPSUICB_REASON_EXTPUSH。 有关 uMsg 和 lParam 参数的详细信息,请参阅 DialogProc。
如果用户单击按钮时不需要 CPSUI 显示对话框,则可以在 pfnCallBack 成员中指定 _CPSUICALLBACK类型回调函数的地址。 当用户单击该按钮时,CPSUI 将调用回调函数。 CPSUICBPARAM 结构的 原因 成员将设置为CPSUICB_REASON_EXTPUSH。
要求
要求 | 价值 |
---|---|
标头 | compstui.h (包括 Compstui.h) |