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。 其他可能的返回值包括以下内容。
返回代码 | 说明 |
---|---|
|
指定的句柄无效。 |
|
发生意外错误。 |
注解
调用方备注
对象调用 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 |