菜单和资源:菜单合并
本文详细步骤所需的 OLE 文档应用程序处理可视化编辑和适当就地激活。 就地激活窗体容器和服务器 (元素) 应用程序的一个挑战。 用户在同一框架窗口保持 (在容器的上下文中文档),但实际上运行其他应用程序 (服务器)。 这需要在容器的资源和服务器应用程序之间的协作。
本文中包含的主题包括:
菜单格式
工具栏和状态栏
菜单格式
第一步是协调菜单格式。 有关更多信息,请参见中 菜单编程的注意事项 的 Menu Creation 部分。 Windows SDK。
,仅当仍存在时,活动嵌入项容器应用程序应创建要使用的新菜单。 在最小,此菜单应包括以下内容,按列出的顺序:
" 文件 " 菜单相同到使用该文件时处于打开状态。 (其他菜单项不在下一项之前通常放置。)
两个连续的分隔符。
windows 菜单相同到使用该文件时处于打开状态 (,仅当在 MDI 应用程序的容器应用程序)。 一些应用程序可能具有其他菜单,例如选项卡菜单上,此组中属于,在菜单上,当仍存在时激活一个嵌入项。
备注
可能会容器视图文档,例如缩放的其他菜单。这些容器菜单显示在此菜单资源的两个分隔符之间。
服务器 (元素) 应用程序应专门还创建新菜单就地激活的。 它应与使用的菜单,当文件打开时,,但,而无需操作服务器的菜单项,例如文件和 windows 文档而不是数据。 通常,此菜单包括:
" 编辑 " 菜单相同到使用该文件时处于打开状态。
分隔符。
" 编辑 " 菜单,例如在 scribble 示例应用程序的笔菜单的对象。
分隔符。
" 帮助 " 菜单。
有关示例,请查看某些示例就地菜单布局容器和服务器。 移除每个菜单项详细信息以进行示例更清晰。 容器的就地菜单中包含以下项:
IDR_CONTAINERTYPE_CNTR_IP MENU PRELOAD DISCARDABLE
BEGIN
POPUP "&File C1"
MENUITEM SEPARATOR
POPUP "&Zoom C2"
MENUITEM SEPARATOR
POPUP "&Options C3"
POPUP "&Window C3"
END
连续的分隔符指示服务器的菜单的第一部分应为。 现在查看服务器上使用就地菜单:
IDR_SERVERTYPE_SRVR_IP MENU PRELOAD DISCARDABLE
BEGIN
POPUP "&Edit S1"
MENUITEM SEPARATOR
POPUP "&Format S2"
MENUITEM SEPARATOR
POPUP "&Help S3"
END
此处分隔符指示容器菜单项的第二组应转到。 出现的菜单结构,当从该服务器上的对象是激活的就地此容器内如下所示:
BEGIN
POPUP "&File C1"
POPUP "&Edit S1"
POPUP "&Zoom C2"
POPUP "&Format S2"
POPUP "&Options C3
POPUP "&Window C3"
POPUP "&Help S3"
END
可以看到,分隔符对每个应用程序菜单的不同组替换。
应由服务器应用程序还提供快捷键对应表与该就地菜单。 容器将合并到自己的快捷键对应表中。
当仍存在时激活一个嵌入项,框架加载该就地菜单。 然后请求其菜单的服务器应用就地激活然后将其插入分隔符的位置。 这是菜单如何合并。 您从容器获取菜单运行中的文件和窗口位置和获得菜单从运行的服务器上项目。
工具栏和状态栏
服务器应用程序在单独的文件应创建新工具栏和存储其位图。 应用程序向导生成的应用程序在调用 ITOOLBAR.BMP 的文件将此位图。 新工具栏替换容器应用程序的工具栏中,当仍存在时激活您的服务器项目,并应包含项目和在规则工具栏相同,但是,移除表示在文件和 windows 的菜单中的图标项目。
此工具栏中的 COleIPFrameWnd派生类加载,创建为由应用程序向导。 状态栏由容器应用程序处理。 有关就地框架窗口实现的更多信息,请参见 服务器:实现服务器。