共用方式為


OPTITEM 結構 (compstui.h)

CPSUI 應用程式會使用 OPTITEM 結構, (包括印表機介面 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

識別選項所屬的對話框。 指定 COMPROPSHEETUI 結構的 pDlgPage 成員指向之 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

如果設定,除非 NULL) ,否則 pExtPush 成員是有效的 (。

如果未設定,除非 NULL) ,否則 pExtChkBox 成員是有效的 (。

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 member.)

OPTIF_OVERLAY_STOP_ICON

如果設定,CPSUI 會將其IDI_CPSUI_STOP圖示重疊到與選項相關聯的圖示上。 (請參閱 Sel/pSel member.)

OPTIF_OVERLAY_WARNING_ICON

如果設定,CPSUI 會將其IDI_CPSUI_WARNING圖示重疊到與選項相關聯的圖示上。 (請參閱 Sel/pSel member.)

OPTIF_SEL_AS_HICON

如果設定, Sel 成員會包含圖示句柄。

如果未設定, Sel 成員會包含圖示資源標識符。

只有當 pOptType 包含 NULL 時,才能使用此旗標。

UserData

可供呼叫端設定及使用的選擇性 32 位值。

(UnidrvPscript 的印表機介面 DLL 會使用此成員來提供 USERDATA 結構的指標。 使用者介面外掛程式 可以參考此 structure.)

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在 Flags 中設定, 則 pExtPush 有效。 如果未設定旗標, pExtChkBox 是有效的。

pOptType

描述選項顯示類型的 OPTTYPE 結構的指標。 如果為 NULL,則選項沒有參數,而且會當做具有較高 層級 值之選項的父系使用。 子選項必須緊接在OPTITEM陣列中的父系後面。 (請參閱下列一節。)

HelpIndex

說明檔索引,可識別要與 選項相關聯的說明文字。 如果為零,此選項的說明檔文字不存在。 請注意,此結構的 pOIExt 成員必須設定為 OIEXT 結構的位址,才能讓說明文字功能存在。

DMPubID

建立 Document Properties 屬性 表時,此成員適用於印表機介面 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 成員中。

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_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)