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 |