IOleInPlaceFrame::SetMenu
在視窗架構容器物件被啟用的位置安裝複合菜單。
HRESULT SetMenu(
HMENU hmenuShared, //複合菜單控制代碼
HOLEMENU holemenu, //菜單描述項控制代碼
HWND hwndActiveObject //對象的視窗控制代碼
);
參數
-
hmenuShared
-
通過調用
IOleInPlaceFrame::InsertMenus和Windows
InsertMenu函數建造的菜單控制代碼。
-
holemenu
-
OleCreateMenuDescriptor函數返回的菜單描述符的控制代碼。
-
hwndActiveObject
-
擁有對象的視窗及接收菜單訊息,命令和加速鍵的視窗的控制代碼。
傳回值
這個方法支援標準傳回值E_INVALIDARG和E_UNEXPECTED,也支援下列:
-
S_OK
-
方法被成功完成。
注釋
調用者注意
對象調用IOleInPlaceFrame::SetMenu去告訴容器通過IOleInPlaceFrame::InsertMenus去安裝複合菜單結構。
實現注意
一個SDI容器的這個方法的實現應該調用Windows的SetMenu函數。一個MDI視窗應該發送一個WM_MDISETMENU訊息,使用hmenuShared作為菜單去安裝。容器應該調用OleSetMenuDescriptor去安裝OLE調度代碼。
當不活動時,容器必須調用IOleInPlaceFrame::SetMenu,指定NULL去移去共用菜單。這協助重繪已最小化的視窗。容器也應該調用OleSetMenuDescriptor,指定NULL去解下調度代碼。最後,對象應用程式調用OleDestroyMenuDescriptor去釋放資料結構。
注意 當執行IOleInPlaceFrame::SetMenu時,不能調用Windows的PeekMessage或GetMessage函數,或一個對話方塊。如果這樣做了,系統可以死機。在SetMenu中可以調用的OLE介面方法和函數還有更多的限制。
快速資訊
Windows NT: 3.1或更高版本。
Windows: Windows 95或更高版本。
Windows CE: 不支援。
Header: oleidl.h。
參見
IOleInPlaceFrame::InsertMenus, OleSetMenuDescriptor, OleDestroyMenuDescriptor
Win32中PeekMessage,GetMessage