ActiveX控件基础与应用Word格式.docx
- 文档编号:16855399
- 上传时间:2022-11-26
- 格式:DOCX
- 页数:13
- 大小:576.55KB
ActiveX控件基础与应用Word格式.docx
《ActiveX控件基础与应用Word格式.docx》由会员分享,可在线阅读,更多相关《ActiveX控件基础与应用Word格式.docx(13页珍藏版)》请在冰豆网上搜索。
作为针对Internet应用开发的技术,ActiveX被广泛应用于WEB服务器以及客户端的各个方面。
同时,ActiveX技术也被用于方便地创建普通的桌面应用程序,此外ActiveX一般具有界面。
二、三个概念:
ActiveX、OLE和COM
从时间的角度讲,OLE是最早出现的,然后是COM和ActiveX;
从体系结构角度讲,OLE和ActiveX是建立在COM之上的,所以COM是基础;
单从名称角度讲,OLE、ActiveX是两个商标名称,而COM则是一个纯技术名词,这也是大家更多的听说ActiveX和OLE的原因。
COM是应OLE的需求而诞生的,所以虽然COM是OLE的基础,但OLE的产生却在COM之前。
COM的基本出发点是,让某个软件通过一个通用的机构为另一个软件提供服务。
ActiveX最核心的技术还是COM。
ActiveX和OLE的最大不同在于,OLE针对的是桌面上应用软件和文件之间的集成,而ActiveX则以提供进一步的网络应用与用户交互为主。
COM对象可以用C++、Java和VB等任意一种语言编写,并可以用DLL或作为不同过程工作的执行文件的形式来实现。
使用COM对象的浏览器,无需关心对象是用什么语言写的,也无须关心它是以DLL还是以另外的过程来执行的。
从浏览器端看,无任何区别。
这样一个通用的处理技巧非常有用。
三、ActiveX控件工程的创建
下使用VS2010有两种方式可以创建ActiveX工程,
第一种:
创建“MFCActiveX控件”工程;
第二种:
创建“ATL项目”。
由于使用ATL开发ActiveX控件需要了解com技术,对程序员的要求也较高,开发时间也较长,所以如果ActiveX只在windows操作系统下运行,那么就使用“MFCActiveX控件”工程来快速建立ActiveX控件。
但是这里要注意了:
使用“MFCActiveX控件”工程来快速建立ActiveX控件,他不仅要建立在windows操作系统下,还必须在windows操作系统下安装c++依赖库安装包,因为MFC是建立在微软的c++动态库的基础上的。
所以这两种方式各有优缺点,根据项目需求来选择适合的方式。
四、使用VS2010创建MFCActiveX工程项目步骤
由于使用ATL进行ActiveX工程的创建难度比较大,所以这里先使用“MFCActiveX控件”工程来创建一个简单的ActiveX控件。
第一:
新建项目-》选择“MFCActiveX控件”工程,给项目命名MyDemoOcx,点击确定,弹出“控件向导”对话框
第二:
在概述,应用程序设置,控件名称和控件设置都可以选择默认,然后点击“完成”,这样“MFCActiveX控件”工程创建完成
五、分析“MFCActiveX控件”工程的三个重要的类以及对外接口定义文件idl
使用向导创建完工程可以看到自动生成了三个类,CMyDemoOcxApp
,CMyDemoOcxCtrl和CMyDemoOcxPropPage
可以打开上面三个类的头文件及cpp文件,发现它们都是派生类。
CMyDemoOcxApp:
文件中定义了DllRegisterServer和DllUnregisterServer,可以发现ActiveX的注册和反组册都与该类有关。
CMyDemoOcxCtrl:
可以发现该头文件中声明了:
1.消息映射(让ActiveX控件程序可以接受系统发送的事件通知,如窗体创建和关闭事件);
2.调度映射(让外部调用程序(包含ActiveX的容器)可以方便地访问ActiveX控件的属性和方法);
3.事件映射(让ActiveX控件可以向外部调用程序(包含ActiveX的容器)发送事件通知)。
也就是说对ActiveX控件的窗口操作都将在这个类中完成,包括ActiveX控件的创建,重绘,以及在此类中创建可视MFC窗体。
CMyDemoOcxPropPage:
显示ActiveX控件的属性页的
让我们来看看最重要的部分:
对外接口定义文件MyDemoOcx.idl,代码如下:
这个就是对外接口定义文件,如果外部程序想要调用ActiveX的方法,属性以及在注册表注册的classid(WEB网页调用需要使用),就必须了解这个文件,这个文件可以分为四个部分来看:
首先是MyDemoOcxLib
这个库信息
第二部分是调度映射的接口信息,该接口信息包含了属性(如控件背景色)和对外方法
里面定义了一个方法AboutBox(),该方法就可以被外部程序调用,在该接口里定义的函数都是纯虚函数,这些函数的实现都是在CMyDemoOcxCtrl中完成的,MFC通过底层的封装,让CMyDemoOcxCtrl类继承这个接口,实现函数。
第三部分是事件映射的接口信息
第四部分是类的信息,其中uuid就是ActiveX控件注册到注册表的classid,它是ActiveX注册后在系统内的唯一标识,WEB网页就是使用这个ID加载ActiveX控件的
六、定义调度映射和事件映射方法,提供给外部调用者使用
那么怎么定义新的调度映射和事件映射方法呢,如果手动定义很不方便,当然使用编译器进行定义,步骤是打开类视图:
可以看到MyDemoOcxLib中有_MyDemoOcxLib:
:
_DMyDemoOcx和_MyDemoOcxLib:
_DMyDemoOcxEvents,在__DMyDemoOcx项中可以右键-》添加方法(或属性),该操作是完成调度映射的方法和属性的添加;
在_DMyDemoOcxEvents项中可以右键-》添加方法(或属性),该操作是完成事件映射的方法和属性的添加。
举个例子,如果要添加一个调度映射的方法SetCurrentProjectName(),使得外部可以调用:
在_DMyDemoOcx项中可以右键-》添加方法,设置框
填写完信息后点击完成,外部就可以调用方法SetCurrentProjectName,同时ActiveX控件项目代码的内部将会在三个文件中新增代码:
1.在
2.在
3.在
最后对生成的控件进行注册。
七、向ActiveX控件中添加一个Mfc窗体,就是一个带界面的ActiveX控件
步骤:
第一:
在资源视图中新建一个对话框资源
去掉上边的“确定”和“取消”按钮,然后修改对话框属性:
Border改为None,Control改为Ture,ID改为IDD_MAIN_DIALOG,Style改为Child,Visible改为True,然后在对话框中双击,为对话框添加一个类,如下图:
点击“完成”。
在解决方案资源管理器中新增了一个CMainViewDlg.h和CMainViewDlg.cpp这个CMainViewDlg类就是刚刚我们建立的对话框类
然后拖一个EditControl到对话框上,修改其ID为IDC_EDIT_OUTPUT,再拖一个Button到对话框上,此时对话框效果为:
对话框建立完成,接下来就是要把它添加到ActiveX控件中去
第二:
在CMyDemoOcxCtrl.h中定义对话框指针对象CMainViewDlg*m_pMainViewDlg;
然后在CMyDemoOcxCtrl类中定义两个消息映射:
窗体创建完成消息映射和窗体改变大小消息映射在VS2010的菜单项“项目”--》“类向导”中,选择要添加到的项目和类中,选择“消息”选项卡,选择WM_CREATE后点击”添加处理程序“按钮和选择WM_SIZE
后点击”添加处理程序“,这样在“现有的处理程序”中就有OnCreate和OnSize这两个函数,点击确定,完成消息映射函数的添加:
在CMyDemoOcxCtrl.cpp中自动添加下列代码,如图:
在OnCreate函数中编写如下代码(Create是在ActiveX控件中创建一个窗体对话框,IDD_MAIN_DIALOG就是刚刚新建的对话框):
在OnSize函数编写代码如下(MoveWindow是确定窗体对话框在ActiveX中的大小):
第三:
重新编译,注册ocx,使用ActiveXControlTestContainer再次测试该控件
可以发现这个ActiveX控件中已经有了界面了。
最后在外部容器中进行测试。
开发一部:
雷阳
日期:
2017-9
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- ActiveX 控件 基础 应用