ActiveXTemplateLibrary-(ATL)简介四(转)[@more@] 四. 应用ATL的一个例子 上面介绍了使用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方法的框架,可以看到如下的代码段: STDMETHODIMP CActiveXObject::get_TestProp(long *pVal) { AFX_MANAGE_STATE(AfxGetStaticModuleState()) // TODO: Add your implementation code here return S_OK; } 7 将程序框架中的注释部分替换为下面的代码: ::MessageBox(NULL,_T(”Hello World!”),_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; 在SimpleClient.cpp文件中加入如下的代码: (2) 在cpp文件 #include “simpleclientdlg.h”之后加入下面的代码: #include “d:simpletestsimpletest_i.h” // 根据需要修改头文件的路径 加入的头文件是在编译COM服务程序过程中自动生成的,其中包含接口本身的定义、接口IID的定义和COM对象的CLSID的定义。包含该头文件可以使客户程序能够使用COM服务程序。 (3) 在按钮TEST的消息控制函数中加入如下的代码: HRESULT hr; ISimpleInterface* pIntf = NULL; hr = CoCreateInstance(CLSID_SimpleInterface, NULL, CLSCTX_SERVER , IID_ISimpleInterface, (void **)& pIntf); if(SUCCEEDED(hr)) { pIntf->Welcome(); pIntf->Release(); } 上面的代码首先通过系统API CoCreateInstance创建COM对象,得到接口的指针,然后调用接口成员函数Welcome,最后通过IUnknown::Release()函数释放COM对象实例。 9 编译连接客户程序 最后,我们可以测试客户程序是否正常运行。启动客户程序,当单击“TEST”按钮时我们可以看到弹出一个消息框,这正是我们的COM服务程序提供的功能。
来自 “ ITPUB博客 ” ,链接:http://blog.itpub.net/8403220/viewspace-948267/,如需转载,请注明出处,否则将追究法律责任。
转载于:http://blog.itpub.net/8403220/viewspace-948267/