IOleInPlaceFrame::SetMenu 方法 (oleidl.h)
將複合功能表新增至視窗框架,其中包含正在就地啟動的物件。
語法
HRESULT SetMenu(
[in] HMENU hmenuShared,
[in] HOLEMENU holemenu,
[in] HWND hwndActiveObject
);
參數
[in] hmenuShared
呼叫 IOleInPlaceFrame::InsertMenus 和 InsertMenu 函式所建構之複合功能表的句柄。
[in] holemenu
OleCreateMenuDescriptor 函式所傳回之功能表描述項的句柄。
[in] hwndActiveObject
物件所擁有的視窗句柄,以及要傳送功能表訊息、命令和快捷鍵的句柄。
傳回值
此方法會在成功時傳回S_OK。 其他可能的傳回值包括下列專案。
傳回碼 | Description |
---|---|
|
指定的句柄無效。 |
|
已發生未預期的錯誤。 |
備註
來電者附註
物件會呼叫 IOleInPlaceFrame::SetMenu ,要求容器安裝由 呼叫 IOleInPlaceFrame::InsertMenus 所設定的複合功能表結構。實作者的注意事項
這個方法的 SDI 容器實作應該呼叫 SetMenu 函式。 MDI 容器應該傳送 WM_MDISETMENU 訊息,並使用 hmenuShared 作為要安裝的功能表。 容器應該呼叫 OleSetMenuDescriptor 來安裝 OLE 分派程序代碼。停用時,容器必須呼叫 IOleInPlaceFrame::SetMenu,並指定 NULL 來移除共用功能表。 這是為了協助將視窗重新繪製降到最低。 容器也應該呼叫 OleSetMenuDescriptor,並指定要取消發送程式代碼的 NULL 。 最後,物件應用程式會呼叫 OleDestroyMenuDescriptor 來釋放數據結構。
注意 執行 IOleInPlaceFrame::SetMenu 時,請勿呼叫 PeekMessage 或 GetMessage 函式或對話方塊。 這樣做可能會導致系統死結。 從 IOleInPlaceFrame::SetMenu 內呼叫 OLE 介面方法和函式有進一步的限制。
規格需求
需求 | 值 |
---|---|
最低支援的用戶端 | Windows 2000 Professional [僅限傳統型應用程式] |
最低支援的伺服器 | Windows 2000 Server [僅限桌面應用程式] |
目標平台 | Windows |
標頭 | oleidl.h |