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 如果已设置, 则 DlgProcDlgTemplateID/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 成员中指定指向对话框过程的指针,并在 DlgTemplateIDhDlgTemplate 成员中包含对话框模板规范。

如果在 Flags 中设置了EPF_USE_HDLGTEMPLATE,CPSUI 将通过调用 DialogBoxIndirectParam 并传递 DlgProchDlgTemplate 成员的内容来创建对话框。

如果未在 Flags 中设置EPF_USE_HDLGTEMPLATE,CPSUI 将通过调用 DialogBoxParam 并传递 DlgProcDlgTemplateID 成员的内容来创建对话框。

当使用 uMsg 值为 WM_INITDIALOG 调用对话框过程时, lParam 值是 CPSUICBPARAM 结构的地址,其中 Reason 成员设置为 CPSUICB_REASON_EXTPUSH。 有关 uMsglParam 参数的详细信息,请参阅 DialogProc

如果用户单击按钮时不需要 CPSUI 显示对话框,则可以在 pfnCallBack 成员中指定_CPSUICALLBACK类型回调函数的地址。 当用户单击按钮时,CPSUI 将调用回调函数。 随附的 CPSUICBPARAM 结构的 Reason 成员将设置为 CPSUICB_REASON_EXTPUSH。

要求

要求
Header compstui.h (包括 Compstui.h)

另请参阅

EXTCHKBOX