本文总结了实现容器的过程,并指向其他文章,这些文章提供了有关实现容器的更详细说明。 它还列出了你可能想要实现的一些可选 OLE 功能,以及描述这些功能的文章。
准备 CWinApp 派生类
在
AfxOleInit
成员函数中调用InitInstance
来初始化 OLE 库。调用
CDocTemplate::SetContainerInfo
以在InitInstance
中分配嵌入项就地激活时使用的菜单和加速器资源。 有关本主题的详细信息,请参阅 “激活”。
使用 MFC 应用程序向导创建容器应用程序时,会自动提供这些功能。 请参阅 创建 MFC EXE 程序。
准备视图类
如果您支持多个选择成为选定项,则通过维护指针或指针列表来跟踪选定项。 函数
OnDraw
必须绘制所有 OLE 项。重写
IsSelected
来检查当前是否选择了传递到它的项。实现消息
OnInsertObject
处理程序以显示 “插入对象 ”对话框。实现
OnSetFocus
消息处理程序,将焦点从视图转移到就地激活的 OLE 嵌入项。OnSize
实现消息处理程序以通知 OLE 嵌入项,它需要更改其矩形以反映其包含视图的大小的变化。
由于这些功能的实现因应用程序而异,因此应用程序向导仅提供基本实现。 可能需要自定义这些函数才能使应用程序正常运行。 有关此示例,请参阅 CONTAINER 示例。
处理嵌入项和链接项
从 COleClientItem 派生一个类。 此类的对象表示已嵌入或已链接到 OLE 文档的项。
替代
OnChange
、OnChangeItemPosition
和OnGetItemPosition
。 这些函数处理大小调整、定位和修改嵌入项和链接项。
应用程序向导将派生该类,但可能需要替代 OnChange
以及在前面过程的步骤 2 中与它一起列出的其他函数。 大多数应用程序都需要自定义主干实现,因为这些函数的实现方式不同于一个应用程序到下一个应用程序。 有关此示例,请参阅 MFC 示例 DRAWCLI 和 CONTAINER。
必须将多个项添加到容器应用程序的菜单结构以支持 OLE。 有关这些内容的详细信息,请参阅 菜单和资源:容器添加。
可能还需要在容器应用程序中支持以下一些功能:
在编辑嵌入项时就地激活。
有关详细信息,请参阅 激活。
通过拖放服务器应用程序中的选择,创建 OLE 项。
有关详细信息,请参阅 OLE 拖放。
指向嵌入对象或组合容器/服务器应用程序的链接。
有关详细信息,请参阅 容器:高级功能。