ActiveX控件:
ActiveX控件也即OCX,继承了自动化的特性,也仅仅可以理解为Automation自动化的界面形式,
即ActiveX控件是个可见的自动化对象。
ActiveX控件类的继承关系:COleControl->CWnd,从CWnd继承,这样使得控件可以接受窗口的所有消息.
控件对自身的窗口消息处理过程进行封装,同时向外提供了接口,客户程序通过OCX控件的接口与其通讯。
在VC中,客户窗口中插入一个OCX控件后,通常都需要生存一个OCX代理或封装类与OCX控件通讯,如果自己手工调用就比较麻烦。
ActiveX控件的主要的两个特点就是:
1。可视化。
2。跨编译运行环境被客户调用,通过接口与客户通讯。
在VC6中,按MFC ActiveXCtrl工程向导一步步生成后,向导形成如下三个默认类:
接口类:
作用:
定义COX控件向外提供的"属性"和"方法".
下面的控件类,都为接口中所定义的”属性“和”方法“服务。
控件类:
作用:
1.通过类似如
PX_Short(pPX,属性名,数据成员,初始值);
的宏,使控件类中的"数据成员"与接口所定义的"属性"建立关联和映射.
2.通过类似如
DISP_PROPERTY_EX(X,X,设置方法,得到方法,数据类型)
的宏来建立"属性"与设置与读取属性值的"方法"的映射.
3.通过类似如
DISP_FUNCTION(X,X,X,返回参数,传入参数)
的宏来实现接口中定义的"方法"
4.自身的窗口消息处理.
属性页类:
在客户端插入OCX控件后,在控件的属性窗口中对其"属性"进行可视化设置,属性窗口中的控件及布局由该属性页类来定义。
该属性页类继承关系:COlePropertyPage->CDialog,向导为该类在资源窗口中创建了一个默认的对话框资源。
如果能使用户在OCX控件的属性窗口中对其“属性‘进行设置,通常都要在对话框可以添加用于设置的控件.
然后通过类似如DDP_CBIndex()的宏,使得属性页对话框中的"控件"、属性页类中的”数据成员"及接口类中定义的“属性项”建立关联。
这样关联的作用是:在OCX控件的属性页中完成OCX控件属性设置后,能立即使的控件属性有所变化。
编译器为上面三个类建立了映射及关联后,开发人员剩下要做的就是加”属性“和”方法“的简单活。