Структура 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
Идентифицирует диалоговое окно, которому принадлежит параметр. Задает индекс массива в массиве DLGPAGE, на который указывает элемент pDlgPage структуры COMPROPSHEETUI .
Если pDlgPage указывает на предопределенную структуру DLGPAGE , предоставляемую CPSUI, CPSUI предоставляет этот индекс.
Flags
Необязательные битовые флаги, которые изменяют характеристики параметра. Флаг OPTIF_CHANGEONCE задается CPSUI; все остальные флаги устанавливаются вызывающим элементом. Можно задать любое сочетание следующих флагов.
OPTIF_CALLBACK
Когда пользователь изменяет параметр, CPSUI должен вызывать функцию обратного вызова _CPSUICALLBACK типа, указанную в структуре COMPROPSHEETUI .
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 в качестве заголовка groupbox.
Если этот параметр задан, CPSUI предоставляет заголовок groupbox.
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-разрядное значение, которое может задать и использовать вызывающий объект.
(Библиотеки DLL интерфейса принтера для Unidrv и Pscript используют этот элемент для предоставления указателя на структуру USERDATA . Подключаемые модули пользовательского интерфейса могут ссылаться на эту структуру.)
pName
Строковый идентификатор, представляющий локализованное отображаемое имя параметра. Это может быть 32-разрядный указатель на строку, завершаемую null, или 16-разрядный строковый идентификатор ресурса с параметром HIWORD, равным нулю. (См. также описание DMPubID ниже.)
DUMMYUNIONNAME
DUMMYUNIONNAME.Sel
Это объединение указывает выбранное значение параметра в данный момент. Его использование зависит от типа параметра CPSUI.
Если pOptType имеет значение NULL, параметр не имеет параметров, поэтому это объединение определяет значок, связанный с узлом древовидного представления для параметра. Идентификатор значка может быть дескриптором значка или идентификатором ресурса значка, как указано в OPTIF_SEL_AS_HICON в разделе Флаги.
DUMMYUNIONNAME.pSel
Это объединение указывает выбранное значение параметра в данный момент. Его использование зависит от типа параметра CPSUI.
Если pOptType имеет значение NULL, параметр не имеет параметров, поэтому это объединение определяет значок, связанный с узлом древовидного представления для параметра. Идентификатор значка может быть дескриптором значка или идентификатором ресурса значка, как указано в 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
Индекс файла справки, который определяет текст справки, связанный с параметром . Если значение равно нулю, текст файла справки для этого параметра не существует. Обратите внимание, что элемент pOIExt этой структуры должен быть задан с адресом структуры OIEXT , чтобы существовала функция текста справки.
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 для определения расположения представления в виде дерева стандартных параметров и для определения содержимого вкладок Макет и Бумага/Качество (см . элемент pDlgPage структуры COMPROPSHEETUI ).
Дополнительные сведения об использовании члена DMPubID см. в следующем разделе Примечаний.
UserItemID
Необязательное значение, предоставленное приложением, которое можно использовать для идентификации вариантов. Не ссылается CPSUI.
wReserved
Зарезервировано, должно быть инициализировано до нуля.
pOIExt
Указатель на необязательную структуру OIEXT . Вызывающий объект отвечает за выделение хранилища для этой структуры.
dwReserved[3]
Зарезервировано, должно быть инициализировано до нуля.
Комментарии
Структуры OPTITEM должны размещаться в массиве, а адрес массива — в элементе pOptItem структуры COMPROPSHEETUI .
Элемент 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 плюс 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) должна представлять серую шкалу, а pData в структуре OPTPARAM должна быть IDS_CPSUI_GRAYSCALE. Вторая структура OPTPARAM (Sel=1) должна представлять Color, а pData в структуре OPTPARAM должна быть IDS_CPSUI_COLOR. Если DMPubID другого параметра DMPUB_ICMINTENT и если параметр Color не выбран, CPSUI отключает параметр, для которого указан DMPUB_ICMINTENT.
CPSUI отключает сопоставление цветов, если цвет не выбран.
Требования
Требование | Значение |
---|---|
Заголовок | compstui.h (включая Compstui.h) |