CONTEXTMENUITEM 구조체(mmc.h)

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

구문

typedef struct _CONTEXTMENUITEM {
  LPWSTR strName;
  LPWSTR strStatusBarText;
  LONG   lCommandID;
  LONG   lInsertionPointID;
  LONG   fFlags;
  LONG   fSpecialFlags;
} CONTEXTMENUITEM;

멤버

strName

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

strStatusBarText

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

lCommandID

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

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

CCM_COMMANDID_MASK_RESERVED = 0xFFFF0000

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

삽입 지점 ID의 일부 비트는 삽입 지점(fSpecialFlagsCCM_SPECIAL_INSERTION_POINT) 또는 하위 메뉴(fFlag 및MF_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

상황에 맞는 메뉴 내의 하위 메뉴임을 지정하는 값입니다. lCommandIDlInsertionPointID로 사용하여 메뉴 항목, 삽입 지점 및 추가 하위 메뉴를 이 하위 메뉴에 추가할 수 있습니다.

MF_BITMAP

MF_OWNERDRAW

이러한 플래그는 지원되지 않으며 IContextMenuCallback::AddItemE_INVALIDARG 반환합니다.

MF_SEPARATOR

가로 구분선을 그립니다.

IContextMenuProvider 인터페이스만 MF_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

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

요구 사항

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

추가 정보

IContextMenuCallback

IContextMenuProvider

IExtendContextMenu

상황에 맞는 메뉴 작업