180 likes | 430 Views
第 12 章 ActiveX 控制. ActiveX 控制是 Microsoft 提供的功能强大的程序设计和开发技术。 ActiveX 控制既是一个自动化对象,当然也是一个标准的 COM 对象,同时它也是一个界面元素,如同 Windows 的普通控制一样。. 12.1 ActiveX 控制基础. ActiveX 控制的主要技术基础为 OLE 复合文档技术,它涉及 OLE 嵌入对象与包容器程序之间的所有技术,并且 ActiveX 控制也引入了一些新的技术规范。 12.1.1 实地激活
E N D
第12章 ActiveX控制 • ActiveX控制是Microsoft提供的功能强大的程序设计和开发技术。ActiveX控制既是一个自动化对象,当然也是一个标准的COM对象,同时它也是一个界面元素,如同Windows的普通控制一样。
12.1 ActiveX控制基础 • ActiveX控制的主要技术基础为OLE复合文档技术,它涉及OLE嵌入对象与包容器程序之间的所有技术,并且ActiveX控制也引入了一些新的技术规范。 • 12.1.1 实地激活 实地激活(in_place_activation)是指OLE对象的一种界面特性,具有实地激活特性的对象可以直接在包容器窗口内部进行编辑,所以有时把这种特性称作实地编辑(in_place editing)或者可视编辑 为了实现实地激活特性,要求OLE对象和包容器程序之间必须遵守严格的接口约定。其中主要包括以下一些接口:IOleInPlaceFrame、 IOleInPlaceWindow、 IOleInPlaceSite、 IOleInPlaceObject和 IOleInPlaceActiveObject。
实地激活 • 为了支持实地激活特性,它必须提供一个站点对象(site object),站点对象实现了接口IOleInPlaceSite、 IOleClientSite以及IAdviseSink。只要站点对象支持接口IOleInPlaceSite,那么被嵌入的对象就会知道包容器支持实地激活特性。 • 12.1.2 属性页 属性页(property page)是OLE的一项技术,属性表(property sheet)由多个属性页组成,每一个属性页有一个标题,通常属性表是一个有模式的对话框,而属性页是一个内篏在属性表对话框中的无模式窗口。 • 12.1.3 属性变化通知 有时候,客户程序希望知道COM对象的属性什么时候发生了变化,以便对属性变化作出反应。 OLE提供了一个专用于属性变化通知的接口IPropertyNotifySink。
12.2 ActiveX控制结构 • ActiveX控制如同一般的自动化对象一样,它有属性和方法,属性反映了ActiveX控制的内部状态,方法提供了各种功能。 • 12.2.1 ActiveX控制基本构架 一个ActiveX控制必须具备以下基本的要求: (1) 属性和方法管理。 (2) 事件机制。 (3) 用户界面特性(可视性)。 (4) 状态永久性机制。
12.2.2 包容器基本结构 • ActiveX控制的包容器程序通常是一个表单或者对话框,也可以是复合文档的视窗口或者文档对象。包容器通常要管理多个ActiveX控制,或者其他Windows普通控制。 • 包容器必须考虑的一些基本功能如下: (1) 包容器布局功能 (2) 包容器的永久特性 (3) 包容器的环境属性 (4) 包容器事件处理机制 (5) 包容器扩展控制 (6) 包容器键盘功能
包容器基本结构 • ActiveX控制包容器所使用的技术列表 功能要求 使用技术 布局特性 OLE复合文档和OLE拖-放机制 永久特性 结构化存储和永久对象 包容器环境属性 自动化和控制站点对象 事件机制 自动化和可连接对象 包容器扩展控制 包容和聚合两种重用模型 键盘功能 IOleControl和IOleControlSite接口
12.2.3 IOleObject和IOleClientSite接口 • IOleObject和IOleClientSite是OLE的基本接口。每一个嵌入对象必须实现IOleObject接口,IOleObject接口是一个规模较大的接口。包括21个成员函数。 • 在IOleObject接口的成员函数中,DoVerb、SetHostsName和Close函数必须被实现。 DoVerb指示嵌入对象执行相应的动作。 SetHostsName使嵌入对象可以在它的窗口标题中显示包容器程序的名字。 Close终止嵌入对象的激活状态。 GetMiscStatus返回嵌入对象的特征信息。
IOleObject和IOleClientSite接口 • IOleClientSite接口是由包容器程序中站点对象实现的接口。它只包含6个成员函数。 • 作为ActiveX控制的包容器程序,必须在站点对象上实现RequestNewObjectLayout函数。这是因为,当ActiveX控制刚被装入时或在运行过程中,它调用此函数告诉包容器它需要改变大小,在此函数内部,站点对象可以调用控制的GetExtent获取控制新的尺寸值。
12.2.4 IOleControl和IOleControlSite • IOleControl和IOleControlSite接口扩展了ActiveX控制与站点对象之间的通信能力,由于IOleControl和IOleControlSite主要用于OLE复合文档与嵌入对象之间的通信,对于ActiveX控制和包容器,它还有其它的要求,比如环境属性、键盘控制以及扩展控制等等, IOleControl和IOleControlSite接口正是针对这些特性而设计的。 其中的成员函数的说明如下: (1) 键盘功能。包括IOleControl接口的GetControlInfo、OnMnemonic成员函数和IOleControlSite接口的OnFocus、OnControlInfoChanged、TranslateAccelerator成员函数。 (2) 扩展控制功能。有IOleControlSite::GetExtendedControl。扩展扩展主要是增加新的属性和方法,因此包容器必须提供Idispatch接口。如果扩展控制要处理它自己的事件,那么还需要实现IConnectionPointContainer接口。
IOleControl和IOleControlSite ActiveX控制通过GetExtendedControl函数可以得到扩展控制的IDispatch接口,以后它就可以访问扩展扩展的属性和方法,这是ActiveX扩展访问扩展控制的唯一途径。不支持扩展返回E_NOTIMPL。 (3) 环境属性。与环境属性有关的函数为IOleControl::OnAmbientPropertyChange。 当包容器的环境属性被改变时,它调用ActiveX控制的OnAmbientPropertyChange函数,告诉控制某个环境属性已经被改变,参数dispID指示了属性的分发ID。 (4) 属性页:与属性页有关的函数为IOleControlSite::ShowPropertyFrame。
IOleControl和IOleControlSite (5) 事件控制:包括IOleControl接口的FreezeEvent以及IOleControlSite接口的LockInPlaceActive、TransFromCoords成员函数。 FreezeEvent函数可打开或关闭ActiveX控制的事件,一旦控制的事件被关闭,那么以后控制就不再激发事件。 LockInPlaceActive(TRUE)函数告诉包容器,它将一直保持激活状态,一直到调用LockInPlaceActive(FALSE)为止。 TransFromCoords成员函数完成包容器一方的坐标转换。
12.2.5 用于ActiveX控制的标准分发ID • 由于ActiveX控制通常具有用户界面,它负责把用户的操作以属性、方法和事件的形式与包容器进行通信。所以,ActiveX控制具有一些通性,比如,通常ActiveX控制具有一个单独的窗口,窗口有颜色、字体等属性。因此,ActiveX控制具有一些预定义的标准属性、方法和事件,有时也称为库存属性、方法和事件(stock property、stock method、stock event)。同样的,对于包容器程序,它通常也有一些标准属性以及扩展属性。表12.5、12.6、12.7、12.8分别列出了常用的标准属性、方法和事件。
12.2.6 ActiveX控制的其他一些特点 • (1)“缺省”和“取消”按钮:在Windows平台上,大多数对话框都有“缺省”和“取消”按钮 • (2) 事件处理:ActiveX控制使用Idispatch接口作为出接口,所以包容器程序通过类型库信息可以找到控制所支持的各种事件和请求;而且ActiveX控制的属性变化通知机制使用IpropertyNotifySink出接口。 • (3)永久特性:ActiveX控制通常也是一个永久对象,它实现了一个或多个永久接口。
ActiveX控制的其他一些特点 • (4) 与ActiveX控制有关的注册项 ActiveX控制是一种具有较多特殊性的COM对象,所以在它的注册信息中也有一些特殊性,其中有几个关键字比较重要,说明如下: (1) Control关键字,如果ActiveX控制的CLSID键下包含它,则表明这是一个ActiveX控制。 (2) ToolboxBitmap32关键字指定了一个16×16位图,其值可以是一个DLL或者EXE的路径加上资源ID号。 (3) MiscStatus子键指定了OLE对象的特性,使ActiveX控制可指示包容器如何创建或者显示控制。 (4) Insertable子键用于指定OLE嵌入对象,也适用于ActiveX控制。
12.3 ActiveX控制与Internet • 由于ActiveX控制是一种可以独立发布的组件程序,又是一个永久对象,这些特性使得它非常适合于Internet环境。在Internet环境中,典型的应用模式为:客户端的浏览器接收Web服务器提供的数据,然后按标准的HTML语言对数据进行解释并在浏览器窗口中表现出来,HTML语言的表述能力限制了浏览器窗口与用户交互的能力。
COM+简介 • COM+定义 COM+就是把MTS集成到COM中,从而为COM调用提供了一种新的基于MSMQ的通信方法。COM+提供了无缝连接系统,在该系统下,创建服务器应用就像实现客户应用一样简单。 • COM+的主要服务 (1) 事务处理(TRANSCACTIONS)-MTS (2) 安全(SECURITY)-基于角色的(Role-Based)安全模型 (3) 并行处理(CONCURRENCY)-”需要同步”属性 (4) 消息队列(MESSAGE QUEUING)-MSMQ (5) “发布和预定”事件服务、负载平衡服务