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 位值。
(Unidrv 和 Pscript 的打印机接口 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 | dmCopies 和 dmCollate | 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 结构中,pOptType 应 NULL。
树视图根节点为级别 0。 当用户展开根节点为级别 1 时显示的选项。 最大级别数为 256。
对于存储在打印机 DEVMODE 结构中的选项值,DMPubID 成员必须标识该选项。 对于所使用的每个 DMPubID 值,打印机接口 DLL 必须指定下表中列出的 CPSUI 选项类型。
DMPubID 值 | 必需的 CPSUI 选项类型 |
---|---|
DMPUB_COLOR | TVOT_2STATES |
DMPUB_COPIES_COLLATE | TVOT_UDARROW 加 EXTCHKBOX(请参阅下表后面的注释)。 |
DMPUB_DEFSOURCE | TVOT_LISTBOX |
DMPUB_DITHERTYPE | TVOT_LISTBOX |
DMPUB_DUPLEX | TVOT_2STATES 或 TVOT_3STATES |
DMPUB_FORMNAME | TVOT_LISTBOX |
DMPUB_ICMINTENT | TVOT_2STATES 或 TVOT_3STATES |
DMPUB_ICMMETHOD | TVOT_2STATES 或 TVOT_3STATES |
DMPUB_MEDIATYPE | TVOT_LISTBOX |
DMPUB_NUP | TVOT_LISTBOX |
DMPUB_ORIENTATION | TVOT_2STATES 或 TVOT_3STATES |
DMPUB_OUTPUTBIN | TVOT_LISTBOX |
DMPUB_PAGEORDER | TVOT_2STATES 或 TVOT_3STATES |
DMPUB_PRINTQUALITY | TVOT_LISTBOX |
DMPUB_QUALITY | TVOT_2STATES 或 TVOT_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) |