一、ActiveX控件(COM组件的应用)
1、什么是Active控件?
基于COM组件技术的,使用与一般控件一样方便。与一般控件的区别:它可以被任何支持COM标准的计算机程序使用
2、什么是COM组件?
组件实现了某种功能的一些小的二进制文件,通过接口对外提供服务。
一个项目有一个或多个exe文件+一个或多个组件,组件与组件之间通过接口交互,有更好的复用性和可维护性
3、什么是接口?
C语言--接口就是函数
C++语言--接口就是公有的成员函数
COM组件--接口就是一组纯虚函数的集合(纯虚类),因为纯虚函数只有声明没有实现,所以接口是稳定的
二、ActiveX控件的开发、注册、测试、使用
1、了解微软提供的ActiveX控件的测试工具
ActiveX Control Test Container
ActiveX控件的开发测试包括控件的属性、方法、事件
在实际工作中一般使用WTL开发ActiveX控件
2、使用MFC向导开发ActiveX控件
2.1向导生成的接口和类的介绍
第一个接口--添加属性和方法的
第二个接口--添加事件的
App--应用程序类
Ctrl--控件类,包含了各种属性、方法和事件的实现。另外,控件的外观在OnDraw()函数中完成。
PropertyPage--属性页类,添加控件的属性设置
2.2实现
1--通过第一个接口右击添加一个方法
void SetNumber(int m_num1,int m_num2);
并在Ctrl类的SetNumber中实现该方法。
2--通过第一个接口右击添加一个属性
BOOL Direction;
自动在Ctrl类中添加一个成员变量m_direction和一个通知函数OnDirectionChanged(),需要在该函数内部完成代码编写。
3--通过第二个接口右击添加事件
事件分:库存事件、用户自定义事件;库存事件是自动通知的,但是用户自定义事件需要手动通知。
3、控件注册
3.1在MFC向导环境下,控件编译生成后自动注册
3.2微软提供了一个用于注册控件的工具 regsvr32.exe ,在运行框中输入:
regsvr32 "组件所在的文件路径" --注册控件
regsvr32 /u "组件所在的文件路径" --卸载组件
4、控件的使用
4.1在MFC的窗口程序中使用控件
方法一:
1--在窗口中右击,选择插入ActiveX控件
2--使用类向导为控件绑定成员变量,在绑定时会提示添加控件包装类,确认添加即可
3--可以像使用一般控件一样使用ActiveX控件了
方法二:
1--菜单栏:工程(P)->增加到工程->Components and Controls...
2--文件夹Registered ActiveX Controls中寻找要插入的控件,选中控件Insert->OK
3--在资源视图的控件菜单最下方会增加插入的控件,拖入即可;或者使用其Create函数创建
4--可以像使用一般控件一样使用ActiveX控件了
4.2在html页面中使用控件
查看获取控件的ID:控件的第一个接口里找类似:
[ uuid(7AAEEBAB-CE07-482F-AA45-667E3D0CE618),helpstring("ActiveXMcd Control"), control ]
coclass ActiveXMcd
uuid()中对应的即为控件ID
三、COM组件的数据类型
1、BSTR -字符串类型
自定义使用步骤:
1.1创建 SysAllocString
1.2使用
1.3释放 SysFreeString
微软ATL库对BSTR的封装类-- CComBSTR
(推荐使用)标准C++库对BSTR的封装类-- _bstr_t 需包含头文件#include <comdef.h>
2、VARIANT -可变类型
是一个结构体,包括枚举类型的成员(数据类型)和联合类型的成员(数值)
微软ATL库对VARIANT的封装类-- CComVariant
(推荐使用)标准C++库对VARIANT的封装类-- _variant_t
四、常用的ActiveX控件
1、DataGrid控件 -表格控件,常用于显示数据库的数据
2、MS Comm控件 -串口通信控件
3、Windows Media Player控件 -播放视频/音频