다음을 통해 공유


IOleInPlaceFrame::SetMenu 메서드(oleidl.h)

활성화되는 개체가 포함된 창 프레임에 복합 메뉴를 추가합니다.

구문

HRESULT SetMenu(
  [in] HMENU    hmenuShared,
  [in] HOLEMENU holemenu,
  [in] HWND     hwndActiveObject
);

매개 변수

[in] hmenuShared

IOleInPlaceFrame::InsertMenusInsertMenu 함수를 호출하여 생성된 복합 메뉴에 대한 핸들입니다.

[in] holemenu

OleCreateMenuDescriptor 함수에서 반환된 메뉴 설명자에 대한 핸들입니다.

[in] hwndActiveObject

개체가 소유한 창과 메뉴 메시지, 명령 및 가속기를 보낼 핸들입니다.

반환 값

이 메서드는 성공에 대한 S_OK 반환합니다. 가능한 다른 반환 값은 다음과 같습니다.

반환 코드 설명
E_INVALIDARG
지정한 핸들이 잘못되었습니다.
E_UNEXPECTED
예기치 않은 오류가 발생했습니다.

설명

발신자에 대한 참고 사항

개체는 IOleInPlaceFrame::SetMenu 를 호출하여 IOleInPlaceFrame::InsertMenus를 호출하여 설정된 복합 메뉴 구조를 컨테이너에 설치하도록 요청합니다.

구현자에 대한 참고 사항

이 메서드의 SDI 컨테이너 구현은 SetMenu 함수를 호출해야 합니다. MDI 컨테이너는 hmenuShared를 설치할 메뉴로 사용하여 WM_MDISETMENU 메시지를 보내야 합니다. 컨테이너는 OleSetMenuDescriptor 를 호출하여 OLE 디스패치 코드를 설치해야 합니다.

비활성화할 때 컨테이너는 공유 메뉴를 제거하도록 NULL을 지정하여 IOleInPlaceFrame::SetMenu를 호출해야 합니다. 이 작업은 창 다시 그리기를 최소화하기 위해 수행됩니다. 또한 컨테이너는 OleSetMenuDescriptor를 호출하여 NULL 을 지정하여 디스패치 코드를 해제해야 합니다. 마지막으로 개체 애플리케이션은 OleDestroyMenuDescriptor 를 호출하여 데이터 구조를 해제합니다.

참고IOleInPlaceFrame::SetMenu를 실행하는 동안 PeekMessage 또는 GetMessage 함수 또는 대화 상자를 호출하지 마세요. 이렇게 하면 시스템이 교착 상태에 빠질 수 있습니다. IOleInPlaceFrame::SetMenu 내에서 OLE 인터페이스 메서드 및 함수를 호출할 수 있는 추가 제한 사항이 있습니다.
 

요구 사항

요구 사항
지원되는 최소 클라이언트 Windows 2000 Professional[데스크톱 앱만]
지원되는 최소 서버 Windows 2000 Server[데스크톱 앱만]
대상 플랫폼 Windows
헤더 oleidl.h

추가 정보

IOleInPlaceFrame

IOleInPlaceFrame::InsertMenus

InsertMenu

OleDestroyMenuDescriptor

OleSetMenuDescriptor