共用方式為


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

識別選項所屬的對話框。 指定由 pDlg Page 所指向之 DLGPAGE 陣列的陣列索引,COMPROPSHEETUI 結構的成員。

如果 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 字串作為 groupbox 標題。

如果設定,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 位指標,也可以是 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是在 Flags中設定,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 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 成員中。

層級 成員可讓您在樹視圖中建立子節點。 例如,若要在層級 1 父節點下建立一組選項節點,請為每個子節點指定層級 2,並在 OPTITEM 陣列中包含其 OPTITEM 結構,緊接在父系 OPTITEM 結構之後。 在父系的 OPTITEM 結構中,pOptTypeNULL

樹視圖根節點為層級 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_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;

如果未在 Flags中設定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)