容器:客户端项通知
本文讨论 MFC 框架在服务器应用程序修改客户端应用程序文档中的项时调用的可重写函数。
COleClientItem 定义了多个可重写函数,这些函数在响应组件应用程序(也称为服务器应用程序)的请求时调用。 这些可重写项通常充当通知。 它们通知容器应用程序各种事件,例如滚动、激活或位置更改,以及用户在编辑或以其他方式操作项时所做的更改。
框架通过调用 COleClientItem::OnChange
通知你的容器应用程序更改,这是一个需要实现的可重写函数。 此受保护的函数接收两个参数。 第一个参数指定服务器更改项的原因:
通知 | 含义 |
---|---|
OLE_CHANGED | OLE_CHANGED OLE 项的外观已更改。 |
OLE_SAVED | OLE 项已保存。 |
OLE_CLOSED | OLE 项已关闭。 |
OLE_RENAMED | 包含 OLE 项的服务器文档已重命名。 |
OLE_CHANGED_STATE | OLE 项已从一种状态更改为另一种状态。 |
OLE_CHANGED_ASPECT | 框架已更改 OLE 项的绘图方面。 |
这些值来自在 AFXOLE.H 中定义的 OLE_NOTIFICATION 枚举。
此函数的第二个参数指定项的更改方式或进入的状态:
当第一个参数为 | 第二个参数 |
---|---|
OLE_SAVED 或 OLE_CLOSED | 未使用。 |
OLE_CHANGED | 指定已更改的 OLE 项的方面。 |
OLE_CHANGED_STATE | 描述进入的状态(emptyState、loadedState、openState、activeState 或 activeUIState)。 |
有关客户端项可以采用的状态的更多信息,请参阅容器:客户端项状态。
当项被激活以进行就地编辑时,框架调用 COleClientItem::OnGetItemPosition
。 支持就地编辑的应用程序需要实现。 MFC 应用程序向导提供了一个基本实现,它将项目的坐标分配给作为参数传递给 OnGetItemPosition
的 CRect
对象。
如果在就地编辑期间 OLE 项的位置或大小发生变化,则必须更新容器的有关项位置和剪切矩形的信息,并且服务器必须收到有关更改的信息。 为此,框架调用 COleClientItem::OnChangeItemPosition
。 MFC 应用程序向导提供调用基类函数的重写。 应编辑应用程序向导为 COleClientItem
派生类编写的函数,以便函数更新客户端项对象保留的任何信息。