OLE文档接口
如果你所开发的控件需要提供一个可视化界面,并需要通过鼠标点击或类似的方式与用户实现交互,则它必须支持基本的OLE文档接口:IoleObject、IOleInPlace、IoleInPlaceActiveObject、IdataObject以及IviewObject2。下表将对这些接口进行了简要的介绍
接口 |
说明 |
IoleObject |
IoleObject提供了OLE文档架构的基本内容。通过该接口,容器和组件相互协商被嵌入对象(在这里指的是一个控件)的大小,并可以获取控件的MiscStatus位 |
IoleInPlaceObject |
一个控件必须实现IoleInPlaceObject来支持在容器中实现在位激活和失效。该接口还提供了一个方法,用于通知控件,它的大小已经改变或已经在容器中删除。 |
IoleInPlaceActiveObject |
一个控件必须实现IoleInPlaceActiveObject,以便对在控件中使用和转换加速键提供支持。IoleInPlaceActiveObject的打部分方法对于ActiveX控件是不需要的。 |
IoleControl |
IoleControl是为支持ActiveX控件而加入的一个新的接口。它所提供的方法使得与控件的交互得到了加强。IoleControl的主要功能是允许控件和容器在处理键盘输入时能够很好的协调工作。 |
IDataObject |
控件实现该接口主要用于为容器提供图形绘制功能。IdataObject还提供了一个属性,用于对它的属性持续性进行设置。 |
IviewObject2 |
当一个控件提供一个可视的外观需要提供IviewObject2.该接口为容器提供各种方法,允许容器通过这些方法请求控件在容器的客户区重绘控件本身。 |
属性页接口
接口 |
说明 |
IspecifyPropertyPage |
控件通过实现该接口,可以向空气提供它的相关属性页的一个列表。GetPages方法返回CLSID的一个数组,其中每个CLSID对应一个属性页。 |
IpropertyPageSite |
IpropertyPageSite使得属性页组件与容器实现的属性单框架之间的通信变得更加容易。在属性页通过IpropertyPageSite::SetPageSite指针。属性页可以使用OnStatusChange方法来通知应用程序框架,它的一个或多个属性已被改变。 |
IpropertyPage2 |
IpropertyPage2由每一个属性页组件实现,并为容器提供一组方法。使用这些方法,容器可以得到属性页窗口的大小,或移动、创建、删除、激活、失效组件的属性页窗口。容器为每一个属性页创建一个框架,并通过这些方法对属性页的显示进行管理。这使得属性单的显示以及它的一些行为如同有应用程序来管理一样,但实际上,一个属性页所包含的每一个组件驻留在一个框架窗口中,但有容器来创建。 |
接口 |
说明 |
IpersistStream |
IpersistStream为组件提供了一种简单的机制来维持它们状态的持续性。客户机程序(这里指容器)通过对其中的一个Ipersist*进行查询来确定是否支持持续性。并通过IpersistStream::Load和IpersistStream::Save来加载和保存数据。 |
IpersistStreamInit |
IpersistStreamInit可以使控件在初始化时设置它的默认值。为了支持该功能,在接口中添加了一个新的方法:InitNew。 |
IpersistProPertyBag |
IpersistProPertyBag以及容器的IproPertyBag提供一个有效地方法用于保存和装载基于文本的属性。属性包持续性(property bag persistence )机制在基于Web的环境中是非常有效的。在这样的环境中,控件的属性信息必须存储在HTML文档中。 |