Структура 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 предоставляет этот индекс.

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 в качестве заголовка группы.

Если задано, 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-разрядное значение, которое можно задать и использовать вызывающим объектом.

(Библиотеки DLL интерфейса принтера для Unidrv и Pscript используют этот элемент для предоставления указателя на структуру USERDATA . Подключаемые модули пользовательского интерфейса могут ссылаться на эту структуру.)

pName

Строковый идентификатор, представляющий локализованное отображаемое имя параметра. Это может быть 32-разрядный указатель на строку, завершаемую значением NULL, или это может быть 16-разрядный строковый идентификатор ресурса, при этом HIWORD имеет значение 0. (См. также описание DMPubID ниже.)

DUMMYUNIONNAME

DUMMYUNIONNAME.Sel

Это объединение указывает выбранное в данный момент значение параметра. Его использование зависит от типа параметра CPSUI.

Если значение pOptType равно NULL, параметр не имеет параметров, поэтому этот союз определяет значок, связанный с узлом дерева для параметра. Идентификатор значка может быть дескриптором значка или идентификатором ресурса значка, как указано OPTIF_SEL_AS_HICON в флагах.

DUMMYUNIONNAME.pSel

Это объединение указывает выбранное в данный момент значение параметра. Его использование зависит от типа параметра CPSUI.

Если значение pOptType равно NULL, параметр не имеет параметров, поэтому этот союз определяет значок, связанный с узлом дерева для параметра. Идентификатор значка может быть дескриптором значка или идентификатором ресурса значка, как указано OPTIF_SEL_AS_HICON в флагах.

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.

Корневой узел treeview равен 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) должна представлять цвет, а pData в структуре OPTPARAM должна быть IDS_CPSUI_COLOR. Если dmPubID другого параметра DMPUB_ICMINTENT и если параметр color не выбран, CPSUI отключает параметр, для которого указан DMPUB_ICMINTENT.

CPSUI отключает сопоставление цветов, если цвет не выбран.

Требования

   
Заголовок compstui.h (include Compstui.h)