容器:实现容器

本文总结了实现容器的过程,并指向其他文章,这些文章提供了有关实现容器的更详细说明。 它还列出了你可能想要实现的一些可选 OLE 功能,以及描述这些功能的文章。

准备 CWinApp 派生类

  1. 通过在成员函数中InitInstance调用AfxOleInit来初始化 OLE 库。

  2. InitInstance调用CDocTemplate::SetContainerInfo以分配嵌入项就地激活时使用的菜单和加速器资源。 有关本主题的详细信息,请参阅 “激活”。

使用 MFC 应用程序向导创建容器应用程序时,会自动提供这些功能。 请参阅 创建 MFC EXE 程序

准备视图类

  1. 通过维护指向所选项的指针或指针列表来跟踪所选项。 函数 OnDraw 必须绘制所有 OLE 项。

  2. 重写 IsSelected 以检查传递给它的项当前是否处于选中状态。

  3. 实现消息 OnInsertObject 处理程序以显示 “插入对象 ”对话框。

  4. OnSetFocus实现消息处理程序,将焦点从视图传输到就地活动 OLE 嵌入项。

  5. OnSize实现消息处理程序以通知 OLE 嵌入项,它需要更改其矩形以反映其包含视图的大小的变化。

由于这些功能的实现因应用程序而异,因此应用程序向导仅提供基本实现。 可能需要自定义这些函数才能使应用程序正常运行。 有关此示例,请参阅 CONTAINER 示例。

处理嵌入项和链接项

  1. COleClientItem 派生类。 此类的对象表示嵌入或链接到 OLE 文档的项目。

  2. 重写OnChangeOnChangeItemPositionOnGetItemPosition。 这些函数处理大小调整、定位和修改嵌入项和链接项。

应用程序向导将为你派生类,但可能需要重写,并且可能需要替代 OnChange 上述步骤 2 中列出的其他函数。 大多数应用程序都需要自定义主干实现,因为这些函数的实现方式不同于一个应用程序到下一个应用程序。 有关此示例,请参阅 MFC 示例 DRAWCLICONTAINER

必须将多个项添加到容器应用程序的菜单结构以支持 OLE。 有关这些内容的详细信息,请参阅 菜单和资源:容器添加

可能还需要在容器应用程序中支持以下一些功能:

  • 编辑嵌入项时就地激活。

    有关详细信息,请参阅 激活

  • 通过拖放服务器应用程序中的选择,创建 OLE 项。

    有关详细信息,请参阅 OLE 拖放

  • 指向嵌入对象或组合容器/服务器应用程序的链接。

    有关详细信息,请参阅 容器:高级功能

另请参阅

容器
容器:客户端项