Windows核心编程之ActiveX.docVIP

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
2.1 ActiveX控件介绍 ActiveX是在M$与JAVA抗争时产生的一个新名词(1996年3月),ActiveX技术的前身是OLE技术是M$为了适应Internet的发展对OLE进行的扩展(当时的含义是“Activeate the Internet”),当时只是为了发展一种小型的可从网络上快速下载的可重用组件。但是随着ActiveX技术的发展ActiveX很快成为了M$新的口号。ActiveX由定义WEB页面到OLE控件的所有内容发展到定义一种可重用组件技术的规范。现在ActiveX已经成为一种概念和潮流。 ActiveX的基础是OLE和COM,但是通过M$的各种开发工具可以屏蔽掉COM模型中许多另人费解的技术细节。本节主要讨论如何开发ActiveX控件,其实这只是AcitveX组件技术中的一部分。ActiveX组件技术包括以下一些方面: 自动化服务器 自动化控制器 控件 COM对象 文档 容器 现在的ActiveX控件等价与以前的OLE控件或OCX,一个典型的控件包括设计时和运行时的用户界面,唯一的IDispatch接口定义了控件的属性和方法,唯一的IConnectionPoint接口定义控件可引发的事件。一个控件可以在容器中运行,所以从运行的角度看它类似与一个DLL。由于在IE中添加了对控件的支持,所以你可以在WEB页面中通过VBScript对控件进行操纵。 此外COM组件间在二进制上兼容,当其中一个组件的代码被修改并且被重新编译连接后只要能够保持原来已经存在并被使用的接口不变化(可以添加其他接口)那么其他使用这个组件的文件都不需要重编译。所以利用COM组件技术可以很大程度上的提高软件重用性。同样如果在程序中使用了ActiveX控件那么你在以后升级程序时可以单独升级控件而不需要升级整个程序。在提供灵活性的同时会带来性能上的牺牲,但和ActiveX为我们代码的好处上看来这些牺牲都算不了什么。 利用MFC的Application Wizard我们可以方便的创建一个工程,首先在工程类型中选择MFC ActiveX Control,然后选择在工程中创建多少个控件。在接下来的对话框中并且为每个控件输入相关信息,通过Edit Name按钮可以为控件指定名称,通过Advanced按钮可以为控件指定各种附加特性,此外你还可以将控件指定为一个继承了某种现有窗口类的子类。在本节的例子中我们创建三个控件,分别是: 普通窗口控件 CSam_windowCtrl 无窗口控件 CSam_nowindowCtrl EDIT窗口控件 CSam_editwindowCtrl 在工程创建完毕后你就可以编译并测试控件了,但是这时候的控件还不能做任何事情。我们需要为控件添加方法和属性。简单的讲,方法就相当与类中的函数调用,而属性就相当与类中的成员变量。 假设在普通窗口控件中我们将显示一份学生资料,包括姓名,出生年月,班级名称,为了能够设置这些数据,我们为控件添加一个方法。选择Class Wizard,并选中对话框中的Automation页,按下Add Method按钮以添加消息,然后在弹出的对话框中输入相关信息。我们为新添加的方法取名为SetMertial,同时指定三个参数LPCTSTR pszName,LPCTSTR pszBirth,LPCTSTR pszClass,返回值设置为void,在保存后Class Wizard会生成一个函数,该函数的名称就是你所指定的方法名称。此外我们还添加一个属性用于让用户设置显示文字的颜色。在添加属性对话框中为属性取名为TextColor,并且接收的参数为OLE_COLOR,并且将实现方法设定为Get/Set Methods。在保存后Class Wizard会为你生成GetXXX/SetXXX两个函数XXX就代表你所指定的属性名,当控件容器更改属性时就通过这两个函数。 然后我们为CSam_windowCtrl添加三个成员变量保存这些学生资料和一个用于保存颜色,当然别忘了在构造函数中对它们初始化。然后修改和添加与方法和属性有关的函数,我们可以看到在数据被修改后都会调用Invalidate()使窗口重绘。 // 添加成员变量 class CSam_windowCtrl : public COleControl { DECLARE_DYNCREATE(CSam_windowCtrl) // Constructor public: CSam_windowCtrl(); CString m_szName,m_szBirth,m_szClass; ... } //初始化 CSam_windowCtrl::CSam_windowCtrl() { InitializeIIDs(IID_DSam_w

文档评论(0)

hong333666 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档