OPTITEM 구조체(compstui.h)
COMPROPSHEETUI 구조체로 페이지를 설명하는 경우 OPTITEM 구조는 CPSUI 애플리케이션(프린터 인터페이스 DLL 포함)에서 속성 시트 페이지의 속성 시트 옵션 하나를 설명하는 데 사용됩니다.
구문
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
설정된 경우 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 이 0이 아닌 경우 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비트 값입니다.
( Unidrv 및 Pscript 용 프린터 인터페이스 DLL은 이 멤버를 사용하여 USERDATA 구조에 대한 포인터를 제공합니다. 사용자 인터페이스 플러그 인은 이 구조를 참조할 수 있습니다.)
pName
지역화된 표시 가능한 옵션 이름을 나타내는 문자열 식별자입니다. NULL로 끝나는 문자열에 대한 32비트 포인터이거나 HIWORD가 0으로 설정된 16비트 문자열 리소스 식별자일 수 있습니다. (아래 DMPubID에 대한 설명도 참조하세요.)
DUMMYUNIONNAME
DUMMYUNIONNAME.Sel
이 공용 구조체는 옵션의 현재 선택된 매개 변수 값을 나타냅니다. 해당 사용법은 CPSUI 옵션 유형에 따라 달라집니다.
pOptType이 NULL이면 옵션에 매개 변수가 없으므로 이 공용 구조체는 옵션에 대한 treeview 노드와 연결할 아이콘을 식별합니다. 아이콘 식별자는 플래그의 OPTIF_SEL_AS_HICON 표시된 대로 아이콘 핸들 또는 아이콘 리소스 식별자일 수 있습니다.
DUMMYUNIONNAME.pSel
이 공용 구조체는 옵션의 현재 선택된 매개 변수 값을 나타냅니다. 해당 사용법은 CPSUI 옵션 유형에 따라 달라집니다.
pOptType이 NULL이면 옵션에 매개 변수가 없으므로 이 공용 구조체는 옵션에 대한 treeview 노드와 연결할 아이콘을 식별합니다. 아이콘 식별자는 플래그의 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
도움말 파일 인덱스- 옵션과 연결할 도움말 텍스트를 식별합니다. 0이면 이 옵션에 대한 도움말 파일 텍스트가 없습니다. 도움말 텍스트 기능이 존재하려면 이 구조체의 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 콘텐츠를 사용하여 표준 옵션의 트리뷰 배치를 결정하고 레이아웃 및 용지/품질 탭의 내용을 확인합니다(COMPROPSHEETUI 구조의 pDlgPage 멤버 참조).
DMPubID 멤버 사용에 대한 자세한 내용은 다음 설명 섹션을 참조하세요.
UserItemID
옵션 식별 목적으로 사용할 수 있는 선택적 애플리케이션 제공 값입니다. CPSUI에서 참조되지 않습니다.
wReserved
예약된 는 0으로 초기화되어야 합니다.
pOIExt
선택적 OIEXT 구조체에 대한 포인터입니다. 호출자는 이 구조체에 대한 스토리지를 할당해야 합니다.
dwReserved[3]
예약된 는 0으로 초기화되어야 합니다.
설명
OPTITEM 구조체는 배열에 배치해야 하며 배열의 주소는 COMPROPSHEETUI 구조체의 pOptItem 멤버에 배치되어야 합니다.
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)는 회색 소수 자릿수를 나타내야 하며 OPTPARAM 구조체의 pData는 IDS_CPSUI_GRAYSCALE 합니다. 두 번째 OPTPARAM 구조체(Sel=1)는 색을 나타내야 하며 OPTPARAM 구조체의 pData 는 IDS_CPSUI_COLOR 합니다. 다른 옵션의 DMPubID 가 DMPUB_ICMINTENT 색을 선택하지 않으면 CPSUI는 DMPUB_ICMINTENT 지정되는 옵션을 사용하지 않도록 설정합니다.
색을 선택하지 않은 경우 CPSUI에서 색 일치를 사용하지 않도록 설정합니다.
요구 사항
요구 사항 | 값 |
---|---|
헤더 | compstui.h(Compstui.h 포함) |