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

标识选项所属的对话框。 指定由 COMPROPSHEETUI 结构的 pDlgPage 成员指向的 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 时,才能使用此标志。

UserData

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

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

pName

表示本地化的可显示选项名称的字符串标识符。 这可以是指向以 NULL 结尾的字符串的 32 位指针,也可以是 HIWORD 设置为零的 16 位字符串资源标识符。 (另请参阅下面的 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在 Flags 中设置, 则 pExtPush 有效。 如果未设置标志, 则 pExtChkBox 有效。

pOptType

指向描述选项显示类型的 OPTTYPE 结构的指针。 如果 为 NULL,则选项没有参数,并且用作具有较高 Level 值的父 选项。 子选项必须紧跟 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 成员中。

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

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

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

DMPubID 值 必需的 CPSUI 选项类型
DMPUB_COLOR TVOT_2STATES
DMPUB_COPIES_COLLATE TVOT_UDARROW plus EXTCHKBOX (请参阅下表后面的注释。)
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的选项。

CPSUI 在未选择“颜色”时禁用颜色匹配。

要求

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