OPTITEM 结构 (compstui.h)

OPTITEM 结构由 CPSUI 应用程序(包括打印机接口 DLL)用于描述属性表页上的一个 属性表选项(如果页面由 COMPROPSHEETUI 结构描述)。

语法

typedef struct _OPTITEM {
  WORD      cbSize;
  BYTE      Level;
  BYTE      DlgPageIdx;
  DWORD     Flags;
  ULONG_PTR UserData;
  LPTSTR    pName;
  union {
    LONG   Sel;
    LPTSTR pSel;
  } DUMMYUNIONNAME;
  union {
    PEXTCHKBOX pExtChkBox;
    PEXTPUSH   pExtPush;
  } DUMMYUNIONNAME2;
  POPTTYPE  pOptType;
  DWORD     HelpIndex;
  BYTE      DMPubID;
  BYTE      UserItemID;
  WORD      wReserved;
  POIEXT    pOIExt;
  ULONG_PTR dwReserved[3];
} OPTITEM, *POPTITEM;

成员

cbSize

OPTITEM 结构的大小(以字节为单位)。

Level

在树视图中指定此选项的级别。 有关详细信息,请参阅下面的“备注”部分。

DlgPageIdx

标识选项所属的对话框。 指定由 pDlgPageCOMPROPSHEETUI 结构的成员指向的 DLGPAGE 数组中的数组索引。

如果 pDlgPage 指向 CPSUI 提供的预定义 DLGPAGE 结构,则 CPSUI 提供此索引。

Flags

修改选项特征的可选位标志。 OPTIF_CHANGEONCE标志由 CPSUI 设置;所有其他标志都由调用方设置。 可以设置以下标志的任意组合。

OPTIF_CALLBACK

当用户修改选项时,CPSUI 应调用 COMPROPSHEETUI 结构中指定的 _CPSUICALLBACK类型回调函数。

OPTIF_CHANGED

如果 _CPSUICALLBACK类型回调函数修改了该选项,则应设置此标志,以便 CPSUI 将重新显示它。

OPTIF_CHANGEONCE

如果用户修改了该选项,CPSUI 将设置此位。

OPTIF_COLLAPSE

折叠此选项及其子级,使其不在树视图中展开。

OPTIF_DISABLED

禁用该选项,使其不可修改。

OPTIF_ECB_CHECKED

关联的扩展复选框处于选中状态。

OPTIF_EXT_IS_EXTPUSH

如果已设置,则 pExtPush 成员有效(除非 NULL)。

如果未设置,则 pExtChkBox 成员有效(除非 NULL)。

OPTIF_EXT_DISABLED

扩展复选框或扩展的按下按钮不可选择。

OPTIF_EXT_HIDE

CPSUI 不会显示扩展复选框或扩展按下按钮。

OPTIF_HAS_POIEXT

如果已设置,则 pOIExt 成员有效。

OPTIF_HIDE

CPSUI 不会在树视图中显示此选项。 CPSUI 仅在最初创建树视图时检查此标志,因此从其初始值更改标志不起作用。

OPTIF_INITIAL_TVITEM

如果已设置,则 CPSUI 将在显示树视图时将初始窗口焦点设置为此选项。 CPSUI 将树节点展开,并根据需要将选项滚动到视图中。 如果选项处于隐藏状态,或者未为任何 OPTITEM 结构设置此标志,则 CPSUI 会选择初始焦点。

OPTIF_NO_GROUPBOX_NAME

如果未设置,并且 pOptype 不为零,CPSUI 将使用 pName 字符串作为组框标题。

如果已设置,则 CPSUI 提供组框标题。

OPTIF_OVERLAY_NO_ICON

如果设置 CPSUI 会将其IDI_CPSUI_NO图标覆盖到与该选项关联的图标上。 (请参阅 Sel/pSel 成员。

OPTIF_OVERLAY_STOP_ICON

如果设置,CPSUI 会将其IDI_CPSUI_STOP图标覆盖到与该选项关联的图标上。 (请参阅 Sel/pSel 成员。

OPTIF_OVERLAY_WARNING_ICON

如果设置,CPSUI 会将其IDI_CPSUI_WARNING图标覆盖到与该选项关联的图标上。 (请参阅 Sel/pSel 成员。

OPTIF_SEL_AS_HICON

如果已设置,则 Sel 成员包含图标句柄。

如果未设置,则 Sel 成员包含图标资源标识符。

仅当 pOptType 包含 NULL 时,才能使用此标志 NULL

UserData

可设置和使用调用方可设置和使用的可选 32 位值。

UnidrvPscript 的打印机接口 DLL 使用此成员提供指向 USERDATA 结构的指针。用户界面插件 可以引用此结构。

pName

表示本地化的可显示选项名称的字符串标识符。 可以是指向 NULL 终止字符串的 32 位指针,也可以是 16 位字符串资源标识符,HIWORD 设置为零。 (另请参阅下面的 DMPubID的说明。

DUMMYUNIONNAME

DUMMYUNIONNAME.Sel

此联合指示选项当前选定的参数值。 其用法取决于 CPSUI 选项类型

如果 pOptTypeNULL,则该选项没有参数,因此此联合标识要与该选项的树视图节点关联的图标。 图标标识符可以是图标句柄或图标资源标识符,如 标志中的OPTIF_SEL_AS_HICON指示。

DUMMYUNIONNAME.pSel

此联合指示选项当前选定的参数值。 其用法取决于 CPSUI 选项类型

如果 pOptTypeNULL,则该选项没有参数,因此此联合标识要与该选项的树视图节点关联的图标。 图标标识符可以是图标句柄或图标资源标识符,如 标志中的OPTIF_SEL_AS_HICON指示。

DUMMYUNIONNAME2

定义 DUMMYUNIONNAME2 联合。

DUMMYUNIONNAME2.pExtChkBox

指向 EXTCHKBOX 结构的指针

DUMMYUNIONNAME2.pExtPush

此联合可以是指向 EXTCHKBOX 结构的指针、指向 EXTPUSH 结构的指针,也可以是 NULL

OPTITEM 结构可以选择具有 EXTCHKBOX 结构、EXTPUSH 结构或两者都不与之关联的结构。 如果未 NULL,并且OPTIF_EXT_IS_EXTPUSH在 标志中设置,pExtPush 有效。 如果未设置标志,pExtChkBox 有效。

pOptType

指向描述选项显示类型的 OPTTYPE 结构的指针。 如果 NULL,则该选项没有参数,并且用作具有较高 级别 值的选项的父级。 子选项必须紧跟 OPTITEM 数组中的父级。 (请参阅以下备注部分。

HelpIndex

帮助文件索引,用于标识要与选项关联的帮助文本。 如果为零,则此选项不存在帮助文件文本。 请注意,必须使用 OIEXT 结构的地址设置此结构的 pOIExt 成员,以便帮助文本功能存在。

DMPubID

创建 文档属性 属性表时,此成员供打印机接口 DLL 使用(请参阅 DrvDocumentPropertySheets)。 它是一个常量值,该值指定与此选项关联的 DEVMODEW 结构的公共成员(如果有)。 下表列出了可用的常量、关联的 DEVMODE 结构成员,以及每个常量 pName 所需的值。

常量值 必需的 pName 值 结构成员
DMPUB_COLOR dmColor IDS_CPSUI_COLOR_APPERANCE
DMPUB_COPIES_COLLATE dmCopiesdmCollate IDS_CPSUI_COPIES
DMPUB_DEFSOURCE dmDefSource IDS_CPSUI_SOURCE
DMPUB_DITHERTYPE dmDitherType IDS_CPSUI_DITHERING
DMPUB_DUPLEX dmDuplex IDS_CPSUI_DUPLEX
DMPUB_FORMNAME dmFormName IDS_CPSUI_FORMNAME
DMPUB_ICMINTENT dmICMIntent IDS_CPSUI_ICMINTENT
DMPUB_ICMMETHOD dmICMMethod IDS_CPSUI_ICMMETHOD
DMPUB_MEDIATYPE dmMediaType IDS_CPSUI_MEDIA
DMPUB_NUP DEVMODE 的公共部分不包含。 IDS_CPSUI_NUP
DMPUB_ORIENTATION dmOrientation IDS_CPSUI_ORIENTATION
DMPUB_OUTPUTBIN DEVMODE 的公共部分不包含。 IDS_CPSUI_OUTPUTBIN
DMPUB_PAGEORDER DEVMODE 的公共部分不包含。 IDS_CPSUI_PAGEORDER
DMPUB_PRINTQUALITY dmPrintQuality IDS_CPSUI_PRINTQUALITY或IDS_CPSUI_RESOLUTION。 如果未指定,则默认名称IDS_CPSUI_RESOLUTION。
DMPUB_QUALITY DEVMODE 的公共部分不包含。 IDS_CPSUI_QUALITY_SETTINGS
DMPUB_SCALE dmScale IDS_CPSUI_SCALE
DMPUB_TTOPTION dmTTOption IDS_CPSUI_TTOPTION
DMPUB_NONE DEVMODE 的公共部分不包含。
大于或等于DMPUB_USER 由 CPSUI 忽略,可以是调用方定义的值。

CPSUI 不维护 DEVMODE 结构。 应用程序负责将用户选择的选项参数复制到 DEVMODE 结构中。 CPSUI 使用 DMPubID 内容来确定标准选项的树视图放置,并确定 布局纸张/质量 选项卡的内容(请参阅 COMPROPSHEETUI 结构的 pDlgPage 成员)。

有关使用 DMPubID 成员的其他信息,请参阅以下“备注”部分。

UserItemID

可选应用程序提供的值,可用于选项标识目的。 CPSUI 未引用。

wReserved

保留,必须初始化为零。

pOIExt

指向可选 OIEXT 结构的指针。 调用方负责为此结构分配存储。

dwReserved[3]

保留,必须初始化为零。

言论

OPTITEM 结构应放置在数组中,并且数组的地址应放置在 COMPROPSHEETUI 结构的 pOptItem 成员中。

级别 成员允许在树视图中创建子节点。 例如,若要在级别 1 父节点下创建一组选项节点,请为每个子节点指定级别 2,并在 OPTITEM 数组中包含其 OPTITEM 结构,紧接在父级的 OPTITEM 结构之后。 在父级的 OPTITEM 结构中,pOptTypeNULL

树视图根节点为级别 0。 当用户展开根节点为级别 1 时显示的选项。 最大级别数为 256。

对于存储在打印机 DEVMODE 结构中的选项值,DMPubID 成员必须标识该选项。 对于所使用的每个 DMPubID 值,打印机接口 DLL 必须指定下表中列出的 CPSUI 选项类型

DMPubID 值 必需的 CPSUI 选项类型
DMPUB_COLOR TVOT_2STATES
DMPUB_COPIES_COLLATE TVOT_UDARROWEXTCHKBOX(请参阅下表后面的注释)。
DMPUB_DEFSOURCE TVOT_LISTBOX
DMPUB_DITHERTYPE TVOT_LISTBOX
DMPUB_DUPLEX TVOT_2STATESTVOT_3STATES
DMPUB_FORMNAME TVOT_LISTBOX
DMPUB_ICMINTENT TVOT_2STATESTVOT_3STATES
DMPUB_ICMMETHOD TVOT_2STATESTVOT_3STATES
DMPUB_MEDIATYPE TVOT_LISTBOX
DMPUB_NUP TVOT_LISTBOX
DMPUB_ORIENTATION TVOT_2STATESTVOT_3STATES
DMPUB_OUTPUTBIN TVOT_LISTBOX
DMPUB_PAGEORDER TVOT_2STATESTVOT_3STATES
DMPUB_PRINTQUALITY TVOT_LISTBOX
DMPUB_QUALITY TVOT_2STATESTVOT_3STATES
DMPUB_SCALE TVOT_UDARROW
DMPUB_TTOPTION TVOT_LISTBOX

如果 DMPubID DMPUB_COPIES_COLLATE并且打印机可以整理副本,则必须提供扩展复选框(EXTCHKBOX 结构)。 必须设置 EXTCHCKBOX 结构的成员,如下所示:

pExtCheckbox->cbSize = sizeof(EXTCHKBOX);
pExtCheckbox->pTitle = (PWSTR) IDS_CPSUI_COLLATE;
pExtCheckbox->pCheckedName = (PWSTR) IDS_CPSUI_COLLATED;
pExtCheckbox->IconID = IDI_CPSUI_COLLATE;
pExtCheckbox->Flags = ECBF_CHECKNAME_ONLY_ENABLED;
pExtCheckbox->pSeparator = (PWSTR)IDS_CPSUI_SLASH_SEP;

如果未在 标志中设置OPTIF_EXT_HIDE,则如果用户请求多个副本,则 CPSUI 会启用该复选框;如果仅请求一个副本,则禁用该复选框。

此外,CPSUI 将选项的显示文本设置为 一个副本的复制,并为多个副本 副本。

如果 DMPubID 为DMPUB_COLOR,则其第一个 OPTPARAM 结构(Sel=0)必须表示灰度 ,并且 OPTPARAM 结构中的 pData 必须IDS_CPSUI_GRAYSCALE。 其第二个 OPTPARAM 结构(Sel=1)必须表示 Color,并且 OPTPARAM 结构中的 pData 必须IDS_CPSUI_COLOR。 如果另一个选项 DMPubID DMPUB_ICMINTENT且未选择 Color,则 CPSUI 将禁用指定DMPUB_ICMINTENT的选项。

如果未选择 Color,CPSUI 将禁用颜色匹配。

要求

要求 价值
标头 compstui.h (包括 Compstui.h)