Go homepage(回首页)
Upload pictures (上传图片)
Write articles (发文字帖)

The author:(作者)qq
published in(发表于) 2014/7/9 22:38:59
visual c++中制作ActiveX控件的方法

visual c++中制作ActiveX控件的方法

制作ActiveX控件的方法

1.创建一个ActiveX控件

与普通的应用程序一样,创建基本的ActiveX控件也可以利用VC++向导。创建ActiveX控件的方法如下:

(1)选择“File”/“New”菜单,在随后弹出的属性表中选择“Projects”页面,然后选择“MFC ActiveX ControlWizard”,并输入工程名称。单击“OK”按钮,进入“MFC ActiveX Contro l Wizard-Step1 of 2”对话框,如图1所示。



图1 MFC ActiveX ControlWizard-Step 1 of 2对话框

(2)单击“Next”按钮,进入“MFC ActiveX ControlWizard-Step 2 of 2”对话框,如图2所示。

图2 MFC ActiveX ControlWizard-Step 2 of 2对话框



(3)单击“Finish”按钮完成ActiveX控件框架的建立。

2.绘制AcitveX控件的窗口

当一个ActiveX控件的框架被建立后,ActiveX控件向导将为工程产生的类有:

一个COleControlModule的派生类,COleControlModule类是CWinApp类的派生类,该类用于初试化控件。

一个COleControl的派生类,该类代表了ActiveX控件,并实现AvitveX控件的属性、方法、事件的接口。

一个COlePropertyPage的派生类,这个类用于编辑ActiveX控件属性的默认属性页,就像通用控件那样。由向导生成的属性页只有一页,如果用户需要其他属性页需要添加。

在COleControl类中,有一个OnDraw()成员函数,可以使用这个函数对窗口进行重新绘制。

3.为控件添加属性

为控件添加属性需要借助ClassWizard,在ClassWizard的Automation页面中,选择支持ActiveX控件的接口类。再单击【Add Property】按钮,并在随后弹出的Add Property对话框中输入属性名、类型和访问方式,如图3所示。



图3 AddP roperty对话框

注意:在ActiveX控件中,所代表颜色的变量均为OLE_COLOR类型,读者可以使用TranslateColor函数将其转换成COLORREF类型;CString类型可以通过AllocSysString()函数转换成为ActiveX所需要的BSTR型字符串。

4.为控件添加方法

为ActiveX控件添加方法与添加属性的方法类似,也需要借助ClassWizard,在ClassWizard的Automation页面中,选择支持ActiveX控件的接口类。再单击“Add Method”按钮,在弹出的“Add Method”对话框中输入方法的名称、返回值和形参信息,如图4所示。ClassWizard会自动在COleControl派生类中生成实现与该方法相关的接口函数。

添加新方法

方法列表



图4 Add Method对话框

5.为控件添加事件

为ActiveX控件添加事件的方法也非常简单,在ClassWizard的ActiveX Events页面,单击此页面中的“Add Event”按钮就可以方便地为控件添加事件。

6.为AcitveX控件添加属性页

如上所述,ActiveX控件允许在程序编制时,使用户可视化地编辑控件属性,这是通过属性对话框来实现的。

ActiveX控件向导生成的控件程序框架只提供一个页面,怎样才能向ActiveX控件的属性对话框中添加属性页呢?

ActiveX控件属性对话框的页面分为两个种类:一种是固有的属性页,另外一种是用户自己定义的属性页。固有属性页也是系统定义的十分标准的属性页,不用程序员为属性页生成对话资源,也不用程序员添加一句代码,程序员只要直接使用就可以了。MFC提供的固有属性有3种,用于设定ActiveX控件颜色的颜色属性页,用于设定ActiveX控件字体的字体属性页和用于设置AvtiveX图形的图形属性页。用户自定义属性页需要程序员自己处理,程序员需要做以下工作:

(1)为属性页添加对话框资源、添加对话框中的各种控件。

(2)添加对话框类和处理各种控件和AcitveX控件属性之间的联系。

注意:与普通属性页不同的是,在ActiveX控件属性对话框中,每一个属性页对话框都对应的是COlePropertyPage类的派生类。


If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)





QQ:154298438
QQ:417480759