首页 理论教育 使用MFC开发COM组件|VisualC++高级编程

使用MFC开发COM组件|VisualC++高级编程

时间:2023-11-16 理论教育 版权反馈
【摘要】:我们将以一个进程内组件为例,介绍MFC创建COM组件的一般过程。由于要建立进程内组件,所以要选择MFC AppWizard项目类型,项目名称是MFCCOM。图8-7MFC AppWizard项目的向导对话框2. 添加COM对象类用AppWizard只是建立了应用框架,还没有真正创建COM对象。图8-10为组件添加Output方法4. 为组件添加方法添加方法的过程基本上和添加属性的过程差不多。

使用MFC开发COM组件|VisualC++高级编程

我们将以一个进程内组件为例,介绍MFC创建COM组件的一般过程。该组件比较简单,但是过程是完备的,读者如果要实现复杂的组件,可用参照本例,举一反三,作更深入的研究与开发。

1. 创建一个进程内组件项目

利用AppWizard创建组件程序的项目框架。由于要建立进程内组件,所以要选择MFC AppWizard(DLL)项目类型,项目名称是MFCCOM。单击“OK”按钮,进入向导对话框,选择动态链接MFC库的常规DLL选项(Regular DLL using shared MFC DLL),并在自动化(Automation)选项前打勾,如图8-7所示。点击“Finish”按钮,新项目创建完毕。

图8-7 MFC AppWizard(DLL)项目的向导对话框

2. 添加COM对象类

用AppWizard只是建立了应用框架,还没有真正创建COM对象。接下来,就添加一个组件类:打开ClassWizard对话框,单击“Add Class”按钮并选择New命令,弹出New Class对话框,然后在对话框中添加新类CCharset,选择基类为CcmdTarget。对话框下部的Automation中用于提供自动化特性的支持,这里选择“Createable by type ID”。如图8-8所示。单击“OK”,回到ClassWizard对话框,再次单击“OK”关闭ClassWizard,则新类CCharset添加完成,在类CCharset中MFC为我们隐藏性地实现了ICharset接口

这里,带有自动化支持的组件具有一个特殊的接口IDispatch,该接口的作用是处理数据类型的转换,因此自动化组件能被用于多种语言平台,如VB使用组件,那么VB的数据类型就可以通过IDispatch接口和组件的数据类型相兼容。

3. 为组件添加属性

这里要为组件添加属性和操作属性的方法。打开ClassWizard对话框选择Automation属性页。在Class Name列表中选定CCharset类,单击“Add Property”按钮,弹出Add Property对话框,按照图8-9所示填写各项内容,点击OK确定后,ClassWizard就为我们生成了字符集的长度属性Length,同时还生成了操作这个属性的GetLength和SetLength方法。其中,用户是否要产生属性的Get/Set方法是可选的:在图8-9所示对话框中,“Implementation”一栏如果选择“Member variable”就不产生Get/Set方法,而选择“Get/Set methods”就产生以Get和Set开头的方法。

图8-8 添加COM组件类

图8-9 为组件添加属性(www.xing528.com)

读者此时会发现,在ClassView窗口中原来隐蔽的ICharset接口显现出来,并有了一个Length属性。但是这个属性仅仅是接口的内容,还需要为CCharset类添加一个成员变量m_length,让它对应接口的Length属性。

图8-10 为组件添加Output方法

4. 为组件添加方法

添加方法的过程基本上和添加属性的过程差不多。只不过在ClassWizard的Automation页点击“Add Method”按钮,然后在Add Method对话框中添加或选择各个条目,如图8-10所示,我们添加了一个Output方法,功能是以字符串形式输出组件的Length信息。

编辑组件的方法即成员函数Output如下:

其中,BSTR是一种字符串类型,它用于COM组件,在MFC中和它相对应的类型是CString。

5. 建立组件

上面的步骤完成之后,使用Build命令进行编译连接,生成组件MFCCOM.DLL。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈