菜单和资源:服务器添加
本文介绍需要对可视化编辑服务器(组件)应用程序中的菜单和其他资源进行的更改。 服务器应用程序需要对菜单结构和其他资源进行许多添加,因为它可以以以下三种模式之一启动:独立、嵌入或就地。 如菜单和资源 (OLE) 一文中所述,最多有四组菜单。 这四组都可用于 MDI 完整服务器应用程序,而只有三组可用于微型服务器。 应用程序向导将为你所需的服务器类型创建必要的菜单布局。 可能需要进行某些自定义。
如果不使用应用程序向导,可能需要查看 HIERSVR.RC(MFC 示例应用程序 HIERSVR 的资源脚本)以了解如何实现这些更改。
本文涉及的主题包括:
服务器菜单添加项
服务器(组件)应用程序必须添加菜单资源以支持 OLE 可视化编辑。 应用程序在单机模式下运行时使用的菜单不必更改,但你必须在构建应用程序之前添加两个新的菜单资源:一个支持就地激活,一个支持服务器完全打开。 两种菜单资源都被完整和微型服务器应用程序使用。
若要支持就地激活,必须创建一个与在独立模式下运行时使用的菜单资源非常相似的菜单资源。 此菜单的不同之处在于缺少“文件”和“窗口”项(以及处理应用程序而非数据的任何其他菜单项)。 容器应用程序将提供这些菜单项。 有关此菜单合并技术的更多信息和示例,请参阅文章菜单和资源:菜单合并。
若要支持完全打开的激活,必须创建一个与在独立模式下运行时使用的菜单资源几乎相同的菜单资源。 对该菜单资源的唯一修改是对某些项目进行了重新措辞,以反映服务器正在对嵌入在复合文档中的项目进行操作的事实。
除了本文中列出的更改之外,资源文件还需要包含 AFXOLESV.RC,这是 Microsoft 基础类库实现所必需的。 此文件位于 MFC\Include 子目录中。
服务器应用程序加速器表添加项
必须向服务器应用程序添加两个新的加速器表资源;它们直接对应于前面描述的新菜单资源。 服务器应用程序就地激活时,将使用第一个加速器表。 它由视图的加速器表中的所有条目组成,但与“文件”和“窗口”菜单相关联的条目除外。
第二个表几乎是视图的加速器表的精确副本。 在服务器菜单添加项中提到的完全打开的菜单中所做的任何差异并行更改。
有关这些加速器表更改的示例,请将 IDR_HIERSVRTYPE_SRVR_IP 和 IDR_HIERSVRTYPE_SRVR_EMB 加速器表与 MFC OLE 示例 HIERSVR 中包含的 HIERSVR.RC 文件中的 IDR_MAINFRAME 进行比较。 就地表中缺少“文件”和“窗口”加速器,而它们的确切副本位于嵌入表中。
服务器应用程序的字符串表添加项
在服务器应用程序中只需要添加一个字符串表,即表示 OLE 初始化失败的字符串。 例如,以下是应用程序向导生成的字符串表条目:
ID | 字符串 |
---|---|
IDP_OLE_INIT_FAILED | OLE 初始化失败。 请确保 OLE 库的版本正确。 |
微型服务器添加项
与上面列出的完整服务器相同的添加适用于微型服务器。 因为微型服务器不能在独立模式下运行,所以它的主菜单要小得多。 应用程序向导创建的主菜单只有一个“文件”菜单,其中仅包含“退出”和“关于”项。 微型服务器的嵌入式菜单和就地菜单和加速器与完整服务器的相同。