本文介绍客户端项在其生存期内经历的不同状态。
客户端项在创建、激活、修改和保存时通过多个状态。 每次项的状态更改时,框架都会使用OLE_CHANGED_STATE通知调用 COleClientItem::OnChange。 第二个参数是枚举中的 COleClientItem::ItemState 值。 该参数可以是下列值之一:
COleClientItem::emptyState
COleClientItem::loadedState
COleClientItem::openState
COleClientItem::activeState
COleClientItem::activeUIState
在空状态下,客户端项尚未完全是项。 已为其分配内存,但尚未使用 OLE 项的数据初始化内存。 这是客户端项通过调用 new 创建客户端项时的状态,但尚未经历典型的双重创建的第二步。
在第二步中,通过调用 COleClientItem::CreateFromFile 或其他 CreateFromxxxx 函数执行,将完全创建该项。 OLE 数据(来自文件或其他源(如剪贴板)已与 COleClientItem派生对象相关联。 现在该项处于加载状态。
当项在服务器窗口中打开,而不是在容器的文档中就地打开时,它处于打开状态(或完全打开)。 在此状态下,交叉阴影通常绘制在容器窗口中的项表示形式上,以指示该项在其他位置处于活动状态。
当某个项已就地激活时,它通常仅短暂地通过活动状态传递。 然后,它会进入 UI 活动状态,服务器已将其菜单、工具栏和其他用户界面组件与容器的菜单、工具栏和其他用户界面组件合并在一起。 这些用户界面组件的存在将 UI 活动状态与活动状态区分开来。 否则,活动状态类似于 UI 活动状态。 如果服务器支持撤消,则服务器需要保留 OLE 项的撤消状态信息,直到它达到已加载或打开状态。