共用方式為


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。 其他可能的傳回值包括下列專案。

傳回碼 Description
E_INVALIDARG
指定的句柄無效。
E_UNEXPECTED
已發生未預期的錯誤。

備註

來電者附註

物件會呼叫 IOleInPlaceFrame::SetMenu ,要求容器安裝由 呼叫 IOleInPlaceFrame::InsertMenus 所設定的複合功能表結構。

實作者的注意事項

這個方法的 SDI 容器實作應該呼叫 SetMenu 函式。 MDI 容器應該傳送 WM_MDISETMENU 訊息,並使用 hmenuShared 作為要安裝的功能表。 容器應該呼叫 OleSetMenuDescriptor 來安裝 OLE 分派程序代碼。

停用時,容器必須呼叫 IOleInPlaceFrame::SetMenu,並指定 NULL 來移除共用功能表。 這是為了協助將視窗重新繪製降到最低。 容器也應該呼叫 OleSetMenuDescriptor,並指定要取消發送程式代碼的 NULL 。 最後,物件應用程式會呼叫 OleDestroyMenuDescriptor 來釋放數據結構。

注意 執行 IOleInPlaceFrame::SetMenu 時,請勿呼叫 PeekMessageGetMessage 函式或對話方塊。 這樣做可能會導致系統死結。 從 IOleInPlaceFrame::SetMenu 內呼叫 OLE 介面方法和函式有進一步的限制。
 

規格需求

需求
最低支援的用戶端 Windows 2000 Professional [僅限傳統型應用程式]
最低支援的伺服器 Windows 2000 Server [僅限桌面應用程式]
目標平台 Windows
標頭 oleidl.h

另請參閱

IOleInPlaceFrame

IOleInPlaceFrame::InsertMenus

InsertMenu

OleDestroyMenuDescriptor

OleSetMenuDescriptor