다음을 통해 공유


CONTEXTMENUITEM2 구조체(mmc.h)

CONTEXTMENUITEM2 구조는 MMC 2.0에서 도입되었습니다.

CONTEXTMENUITEM2 구조체는 IContextMenuCallback2::AddItem 메서드 또는 IContextMenuProvider::AddItem 메서드(IContextMenuCallback에서 상속됨)에 전달되어 새 메뉴 항목, 하위 메뉴 또는 삽입 지점을 정의합니다. 상황에 맞는 메뉴는 루트에서 아래로 빌드되며, 각 새 항목은 새 항목이 삽입되는 하위 메뉴 또는 삽입 지점의 끝으로 이동합니다. CONTEXTMENUITEM2 구조체는 CONTEXTMENUITEM 구조체를 대체합니다(strLanguageIndependentName 멤버 이외의 CONTEXTMENUITEM2 멤버는 모두 CONTEXTMENUITEM에 있습니다).

구문

typedef struct _CONTEXTMENUITEM2 {
  LPWSTR strName;
  LPWSTR strStatusBarText;
  LONG   lCommandID;
  LONG   lInsertionPointID;
  LONG   fFlags;
  LONG   fSpecialFlags;
  LPWSTR strLanguageIndependentName;
} CONTEXTMENUITEM2;

멤버

strName

메뉴 항목 또는 하위 메뉴의 이름을 포함하는 null로 끝나는 문자열에 대한 포인터입니다. 구분 기호 또는 삽입 지점을 제외하고 이 멤버는 NULL 일 수 없습니다.

strStatusBarText

이 항목이 강조 표시될 때 상태 표시줄에 표시되는 텍스트가 포함된 null로 끝나는 문자열에 대한 포인터입니다. 이 멤버는 NULL일 수 있습니다.

lCommandID

메뉴 항목에 대한 명령 식별자를 지정하는 값입니다. 메뉴 항목이 IExtendContextMenu::AddMenuItems 에 의해 추가된 다음 선택한 경우 lCommandIDIExtendContextMenu::Command로 다시 전달되는 명령 ID 매개 변수입니다. 이 메뉴 항목이 IContextMenuProvider 인터페이스에 의해 추가된 다음 선택한 경우 IContextMenuProvider::ShowContextMenu에서 pISelected로 다시 전달되는 명령 ID입니다. 삽입 지점(CCM_SPECIAL_INSERTION_POINTfSpecialFlags로 설정됨) 또는 하위 메뉴(fFlags에서 설정된 MF_POPUP)인 경우 후속 호출에서 lInsertionPointIDlCommandID를 사용합니다(자세한 내용은 다음 목록을 참조하세요). 새 삽입 지점 ID의 특정 비트가 켜지고 다른 비트가 꺼져 있어야 하므로 다음 토론을 주의 깊게 읽어 보세요.

명령 ID의 다음 비트는 삽입 지점이나 하위 메뉴가 아닌 항목에 대해 특수한 처리가 필요합니다.

CCM_COMMANDID_MASK_RESERVED(0xFFFF0000)

이러한 비트가 설정되면 삽입 지점 및 하위 메뉴 이외의 항목을 추가할 수 없습니다.

삽입 지점 ID의 다음 비트는 삽입 지점(fSpecialFlagsCCM_SPECIAL_INSERTION_POINT) 또는 하위 메뉴(fFlagsMF_POPUP)인 항목에 대해 특수한 처리가 필요합니다.

CCM_INSERTIONPOINTID_MASK_SPECIAL(0xFFFF0000)

특수 동작입니다. 스냅인은 필요에 따라 다른 비트를 사용할 수 있습니다.

CCM_INSERTIONPOINTID_MASK_SHARED(0x80000000)

이러한 삽입 지점 및 하위 메뉴는 상황에 맞는 메뉴의 작성자, 기본 확장 및 타사 확장 간에 공유됩니다. 공유 삽입 지점 또는 하위 메뉴에 추가된 항목은 상황에 맞는 메뉴, 기본 확장 및 타사 확장의 작성자가 사용할 수 있습니다.

이 비트를 설정하지 않으면 IContextMenuProvider 인터페이스와 각 확장에서 동일한 ID를 사용할 수 있습니다. 각 ID는 다른 삽입 지점 또는 하위 메뉴입니다.

상황에 맞는 메뉴 작성자와 기본 스냅인만 공유 삽입 지점 또는 하위 메뉴를 만들 수 있습니다.

CCM_INSERTIONPOINTID_MASK_CREATE_PRIMARY(0x40000000)

이 비트는 기본 스냅인에서 만든 공유 삽입 지점 및 하위 메뉴에 대해 설정되어야 하며 상황에 맞는 메뉴 작성자가 만든 항목에 대해 설정되지 않아야 합니다. 이렇게 하면 공유 삽입 지점과 하위 메뉴의 두 원본 간에 ID 충돌이 발생하지 않습니다.

CCM_INSERTIONPOINTID_MASK_ADD_PRIMARY(0x20000000)

기본 스냅인에서 공유 삽입 지점 또는 하위 메뉴에 항목을 추가할 수 있습니다.

CCM_INSERTIONPOINTID_MASK_ADD_3RDPARTY(0x10000000)

확장 스냅인에서 공유 삽입 지점 또는 하위 메뉴에 항목을 추가할 수 있습니다.

CCM_INSERTIONPOINTID_MASK_RESERVED(0x0FFF0000)

삽입 지점 또는 하위 메뉴는 이 값 집합으로 추가할 수 없습니다.

lInsertionPointID

상황에 맞는 메뉴에서 새 항목을 추가할 위치를 지정하는 값입니다. 스냅인은 메뉴 작성자 또는 기본 스냅인에서 만든 삽입 지점에만 항목을 추가할 수 있습니다. 다음은 scope 창 및 목록 보기 결과 창의 항목에 대한 기본 상황에 맞는 메뉴에서 MMC가 만든 삽입 지점입니다.

0(영)

lInsertionPointID 0은 이 상황에 맞는 메뉴의 루트 메뉴를 나타냅니다. 값 0은 CCM_INSERTIONPOINTID_ROOT_MENU 서로 바꿔 사용할 수 있습니다. IContextMenuProvider만 루트 메뉴에 항목을 직접 추가할 수 있습니다. 확장은 IContextMenuProvider 또는 MMC에서 루트 메뉴에 추가된 삽입 지점 및 하위 메뉴에만 항목을 추가할 수 있습니다.

CCM_INSERTIONPOINTID_PRIMARY_TOP(0xA0000000)

기본 스냅인은 이 삽입 지점을 사용하여 기본 상황에 맞는 메뉴의 맨 위에 항목을 추가할 수 있습니다.

CCM_INSERTIONPOINTID_PRIMARY_NEW(0xA0000001)

기본 스냅인은 이 삽입 지점을 사용하여 하위 메뉴의 맨 위에 항목을 추가할 수 있습니다. 하위 메뉴는 scope 및 결과 창의 상황에 맞는 메뉴에서 사용할 수 있습니다.

CCM_INSERTIONPOINTID_PRIMARY_TASK(0xA0000002)

기본 스냅인은 이 삽입 지점을 사용하여 모든 작업 하위 메뉴의 맨 위에 항목을 추가할 수 있습니다. 모든 작업 하위 메뉴는 scope 및 결과 창의 상황에 맞는 메뉴에서 사용할 수 있습니다.

CCM_INSERTIONPOINTID_PRIMARY_VIEW(0xA0000003)

기본 스냅인은 이 삽입 지점을 사용하여 보기 메뉴에 항목을 추가할 수 있습니다. 사용자가 도구 모음에서 보기 드롭다운 메뉴를 클릭하면 이 삽입 지점이 표시되지만 새로 만들기 및 모든 작업 삽입 지점은 표시되지 않습니다.

CCM_INSERTIONPOINTID_3RDPARTY_NEW(0x90000001)

확장 스냅인은 이 삽입 지점을 사용하여 하위 메뉴의 아래쪽에 항목을 추가할 수 있습니다. 하위 메뉴는 결과 창의 상황에 맞는 메뉴가 아니라 scope 창의 상황에 맞는 메뉴에만 있습니다.

CCM_INSERTIONPOINTID_3RDPARTY_TASK(0x90000002)

확장 스냅인은 이 삽입 지점을 사용하여 모든 작업 하위 메뉴의 맨 아래에 항목을 추가할 수 있습니다.

CCM_INSERTIONPOINTID_ROOT_MENU(0x80000000)

IContextMenuProvider 는 이 삽입 지점을 사용하여 루트 메뉴에 항목을 추가할 수 있습니다.

기본 확장이나 타사 확장 모두 IContextMenuProvider에서 추가한 삽입 지점을 제외하고 루트 메뉴에 항목을 추가할 수 없습니다.

fFlags

다음 스타일 플래그 중 하나 이상을 지정하는 값입니다.

MF_POPUP

만든 항목은 상황에 맞는 메뉴 내의 하위 메뉴입니다. 메뉴 항목, 삽입 지점 및 기타 하위 메뉴를 만든 하위 메뉴에 추가할 수 있습니다. 새 메뉴 항목, 하위 메뉴 또는 삽입 지점은 생성된 하위 메뉴의 lCommandID 멤버를 lInsertionPointID 멤버 값으로 사용해야 합니다.

MF_BITMAP

이 플래그는 지원되지 않습니다. IContextMenuCallback2::AddItemE_INVALIDARG 반환합니다.

MF_OWNERDRAW

이 플래그는 지원되지 않습니다. IContextMenuCallback2::AddItemE_INVALIDARG 반환합니다.

MF_SEPARATOR

가로 구분선을 그립니다.

IContextMenuProviderMF_SEPARATOR 설정된 메뉴 항목을 추가할 수 있습니다.

다음 플래그는 Windows API에서와 동일한 방식으로 작동합니다.

MF_CHECKED

메뉴 항목을 선택합니다.

MF_DISABLED

메뉴 항목을 선택할 수 없도록 메뉴 항목을 사용하지 않도록 설정하지만 플래그는 메뉴 항목을 흐리게 표시하지 않습니다.

MF_ENABLED

메뉴 항목을 선택할 수 있도록 설정하여 흐리게 표시된 상태에서 복원합니다.

MF_GRAYED

메뉴 항목을 사용하지 않도록 설정하여 선택할 수 없도록 흐리게 표시합니다.

MF_MENUBARBREAK

메뉴 모음의 MF_MENUBREAK 플래그와 동일하게 작동합니다. 드롭다운 메뉴, 하위 메뉴 또는 바로 가기 메뉴의 경우 세로줄은 새 열을 이전 열과 구분합니다.

MF_MENUBREAK

열을 구분하지 않고 새 줄(메뉴 모음의 경우) 또는 새 열(드롭다운 메뉴, 하위 메뉴 또는 바로 가기 메뉴의 경우)에서 항목을 Places.

MF_UNCHECKED

항목을 선택하지 않습니다(기본값).

다음 플래그 그룹을 함께 사용할 수 없습니다.

  • MF_DISABLED, MF_ENABLEDMF_GRAYED
  • MF_MENUBARBREAKMF_MENUBREAK
  • MF_CHECKEDMF_UNCHECKED

fSpecialFlags

다음 플래그 중 하나 이상을 지정하는 값입니다.

CCM_SPECIAL_SEPARATOR(0x0001)

lInsertionPointID를 제외한 다른 모든 매개 변수는 무시합니다. 메뉴 끝이나 지정된 삽입 지점에 구분 기호를 추가합니다. 메뉴 또는 하위 메뉴의 위쪽 또는 아래쪽에 배치된 구분 기호는 표시되지 않습니다. 메뉴 항목이 없는 구분 기호는 단일 구분 기호로 축소됩니다.

IContextMenuProvider만 특수 또는 기타 구분 기호를 추가할 수 있습니다.

CCM_SPECIAL_SUBMENU(0x0002)

이 하위 메뉴가 비어 있으면 흐리게 표시됩니다. MF_POPUP 항목에 만 유효합니다.

CCM_SPECIAL_DEFAULT_ITEM(0x0004)

기본 메뉴 항목입니다. 두 개 이상의 메뉴 항목이 이 플래그를 지정하는 경우 각 하위 메뉴의 마지막 항목이 우선합니다.

CCM_SPECIAL_INSERTION_POINT(0x0008)

lCommandIDlInsertionPointID를 제외한 다른 모든 매개 변수는 무시합니다. 이 플래그는 lInsertionPointID로 식별된 삽입 지점 또는 하위 메뉴의 끝에 새 삽입 지점을 만듭니다. 새 메뉴 항목, 하위 메뉴 또는 삽입 지점을 만든 삽입 지점에 추가할 수 있습니다. 새 메뉴 항목, 하위 메뉴 또는 삽입 지점은 생성된 삽입 지점의 lCommandID 멤버를 lInsertionPointID 멤버 값으로 사용해야 합니다.

CCM_SPECIAL_TESTONLY = 0x0010

항목 매개 변수의 유효성을 검사하지만 메뉴 항목을 추가하지는 않습니다. 추가 작업이 성공했는지 여부를 나타내는 결과 코드를 반환합니다.

strLanguageIndependentName

메뉴 항목의 언어 독립적 이름입니다. MenuItem.LanguageIndependentName 속성을 가져와 MMC 2.0 Automation 개체 모델 애플리케이션에서 이 값을 검색합니다. 구분 기호 또는 삽입 지점이 추가되지 않는 한 strLanguageIndependentName 멤버는 NULL 또는 빈 문자열일 수 없습니다. 그렇지 않으면 반환 값으로 E_INVALIDARGIContextMenuCallback::AddItem 메서드가 실패합니다.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista
지원되는 최소 서버 Windows Server 2008
머리글 mmc.h

추가 정보

IContextMenuCallback2

IContextMenuProvider

IExtendContextMenu

상황에 맞는 메뉴 작업