? 12 ? ActiveX??

Document Sample
? 12 ? ActiveX?? Powered By Docstoc
					        第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) “发布和预定”事件服务、负载平衡服务

				
DOCUMENT INFO
Shared By:
Categories:
Tags:
Stats:
views:4
posted:2/16/2012
language:
pages:18