Поделиться через


Структура 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)