ATL的应用举例

 我来答
爪机粉丝0065A
2016-05-12 · TA获得超过174个赞
知道答主
回答量:191
采纳率:100%
帮助的人:137万
展开全部

上面介绍了使用ATL创建一个COM服务程序的基本过程。在介绍过程中,我们实际上已经生成了一个COM服务程序的基本框架,只是没有填写实际的内容。在下面部分,我们实际开发一个十分简单的COM服务程序,并且为它编写一段客户代码进行测试,使大家对使用ATL开发COM服务程序的过程有一个全面整体的了解。
我们要开发的服务程序的功能很简单,它只实现一个接口,这个接口名字是ISimpleInterface,接口只有一个成员函数,叫做Welcome。这个函数的功能只是输出一个“Hello World!”的字符串。
按照上一部分介绍的创建COM服务程序的步骤,我们进行如下的操作:
1.打开Visual C++集成开发环境;
2.创建一个称为SimpleTest的ATL工程;
3.在这个工程中插入新的对象,对象的名字是SimpleInterface;
4.设置接口ISimpleInterface的有关属性,使它成为一个双接口;
5.在对象的接口ISimpleInterface中加入方法Welcome;
6.打开ATL加入的Welcome方法的框架,可以看到如下的代码段: STDMETHODIMPCActiveXObject::get_TestProp(long*pVal){AFX_MANAGE_STATE(AfxGetStaticModuleState())//TODO:AddyourimplementationcodeherereturnS_OK;}7.将程序框架中的注释部分替换为下面的代码: ::MessageBox(NULL,_T(”HelloWorld!”),_T(”Welcome”),MB_OK);Welcome方法被调用时将弹出一个消息框。
8.编译连接工程。
上面的步骤完成以后,我们就有了一个简单的COM服务程序,而且已经被注册到当前系统中。
下面我们要完成一个简单的COM客户程序。一个COM客户程序简单地说是使用COM组件对象的程序。客户程序调用COM对象的基本流程是:
创建COM对象的实例。这可以通过调用Windows系统的API函数CoCreateInstance来完成。
通过接口调用函数。
调用IUnknown::Release释放COM对象实例
我们的客户程序是使用MFC编写的一个基于对话框的简单应用程序。具体的过程如下:
1.打开Visual C++集成开发环境;
创建一个称为SimpleClient的基于对话框的MFC工程;
在对话框中加入一个按钮,名字为TEST;
在SimpleClientDlg.cpp文件中加入如下的代码:
⑴ 在cpp文件 #include “simpleclientdlg.h”之后加入下面的代码: #included:\simpletest\simpletest.h#included:\simpletest\simpletest_i.c加入的头文件是在编译COM服务程序过程中自动生成的,其中包含接口本身的定义、接口IID的定义和COM对象的CLSID的定义。包含该头文件可以使客户程序能够使用COM服务程序。
⑵ 在按钮TEST的消息控制函数中加入如下的代码: CoInitialize(0);HRESULThr;ISimpleInterface*pIntf=NULL;hr=CoCreateInstance(CLSID_SimpleInterface,NULL,CLSCTX_SERVER,IID_ISimpleInterface,(void**)&pIntf);if(SUCCEEDED(hr)){pIntf->Welcome();pIntf->Release();}CoUninitialize();上面的代码首先通过系统API CoCreateInstance创建COM对象,得到接口的指针,然后调用接口成员函数Welcome,最后通过IUnknown::Release()函数释放COM对象实例。
编译连接客户程序
最后,我们可以测试客户程序是否正常运行。启动客户程序,当单击“TEST”按钮时我们可以看到弹出一个消息框,这正是我们的COM服务程序提供的功能。

已赞过 已踩过<
你对这个回答的评价是?
评论 收起
启帆信息
2024-11-22 广告
作为启帆信息科技股份有限公司的工作人员,对于Omniverse View有一定了解。Omniverse View是NVIDIA Omniverse平台中的一个强大工具,它易于导航且功能丰富,可以支持任何技能水平的专业人员展示和审查3D设计项... 点击进入详情页
本回答由启帆信息提供
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式