다음을 통해 공유


IExtendContextMenu::AddMenuItems 메서드(mmc.h)

IExtendContextMenu::AddMenuItems 메서드를 사용하면 스냅인에서 상황에 맞는 메뉴에 항목을 추가할 수 있습니다.

구문

HRESULT AddMenuItems(
  [in]      LPDATAOBJECT          piDataObject,
  [in]      LPCONTEXTMENUCALLBACK piCallback,
  [in, out] long                  *pInsertionAllowed
);

매개 변수

[in] piDataObject

항목이 추가되는 메뉴의 데이터 개체에 있는 IDataObject 인터페이스에 대한 포인터입니다.

[in] piCallback

상황에 맞는 메뉴에 항목을 추가할 수 있는 IContextMenuCallback에 대한 포인터입니다.

[in, out] pInsertionAllowed

사용할 수 있는 MMC 정의 메뉴 항목 삽입 지점을 식별하는 값입니다. 다음 플래그의 조합일 수 있습니다.

CCM_INSERTIONALLOWED_TOP

상황에 맞는 메뉴의 맨 위에 항목을 삽입할 수 있습니다.

CCM_INSERTIONALLOWED_NEW

새 하위 메뉴에 항목을 삽입할 수 있습니다.

CCM_INSERTIONALLOWED_TASK

항목은 모든 작업 하위 메뉴에 삽입할 수 있습니다.

CCM_INSERTIONALLOWED_VIEW

항목은 도구 모음 보기 메뉴 또는 결과 창 상황에 맞는 메뉴의 보기 하위 메뉴에 삽입할 수 있습니다.

반환 값

이 메서드는 이러한 값 중 하나를 반환할 수 있습니다.

설명

IExtendContextMenu::AddMenuItems 구현은 일반적으로 piDataObject에서 IDataObject::GetDataHere를 호출하는 데 필요한 노드 형식 및 기타 매개 변수를 읽은 다음, piCallback에서 IContextMenuCallback::AddItem을 호출하여 상황에 맞는 메뉴 항목을 적절하게 추가합니다.

스냅인은 MMC 정의 삽입 지점에서 메뉴 항목을 추가하기 전에 권한에 대해 pInsertionsAllowed 플래그를 검사 합니다. 예를 들어 스냅인은 CCM_INSERTIONALLOWED_NEW 플래그를 설정하지 않는 한 CCM_INSERTIONPOINTID_PRIMARY_NEW 또는 CCM_INSERTIONPOINTID_3RDPARTY_NEW 메뉴 항목을 추가하면 안 됩니다.

pInsertionsAllowed 플래그는 다음 두 가지 기능을 허용합니다.

사용자가 scope 항목을 선택한 다음 상황에 맞는 메뉴를 표시하는 경우 MMC는 스냅인의 IComponentData 및 IComponent(현재 보기를 소유하는) 구현 모두에 메뉴 항목을 추가할 수 있는 기회를 제공합니다. MMC는 스냅인의 IComponent 구현에 의해 구현된 IExtendContextMenu::AddMenuItems 메서드를 호출하여 스냅인이 보기 메뉴에 메뉴 항목을 추가할 수 있도록 합니다. MMC는 스냅인의 IComponentData에 의해 구현된 IExtendContextMenu::AddMenuItems 메서드를 호출하여 스냅인이 다른 모든 메뉴에 메뉴 항목을 추가할 수 있도록 합니다. 스냅인의 IComponent 구현만 보기 메뉴에 항목을 추가할 수 있습니다.

사용자가 scope 항목을 먼저 선택하지 않고 scope 항목의 상황에 맞는 메뉴를 표시하는 경우 MMC는 스냅인의 IComponentData 구현에 보기 메뉴를 제외한 모든 메뉴에 메뉴 항목을 추가할 수 있는 기회만 제공합니다. 따라서 보기 메뉴는 사용자가 항목을 처음 선택하는 경우에만 scope 항목에 대해 표시됩니다.

발신자에 대한 참고 사항

AddMenuItems 메서드는 piDataObject 포인터 또는 piCallback 포인터에서 AddRef를 호출해서는 안 되며 반환 후 해당 인터페이스의 메서드를 호출해서는 안 됩니다. 대신 반환하기 전에 해당 인터페이스의 메서드에 필요한 모든 호출을 수행해야 합니다. 이러한 항목을 선택하면 IExtendContextMenu::Command에서 IDataObject에 대한 포인터가 다시 제공되므로 이 메서드가 반환된 후에도 이 포인터를 유지하지 마세요. 항목을 선택하지 않고 메뉴를 해제하면 알림이 표시되지 않습니다. 또한 한 메서드인 IContextMenuCallback::AddItem으로 충분해야 하므로 piCallback에서 대체 인터페이스를 쿼리하지 마세요.

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows Vista
지원되는 최소 서버 Windows Server 2008
대상 플랫폼 Windows
헤더 mmc.h

추가 정보

CONTEXTMENUITEM

IContextMenuCallback

Idataobject

IExtendContextMenu

상황에 맞는 메뉴 작업