博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
ActiveXTemplateLibrary-(ATL)简介四(转)
阅读量:2454 次
发布时间:2019-05-10

本文共 2130 字,大约阅读时间需要 7 分钟。

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/

你可能感兴趣的文章
github pages_使用GitHub Pages和Lighthouse增强您的开发人员产品组合
查看>>
JavaScript命名约定:注意事项
查看>>
html:漂亮的原生表格_HTML表格:关于它们的所有知识
查看>>
sqoop架构_SQOOP架构的深入介绍
查看>>
自行车车把会吧车刮坏吗_花10分钟即可开始使用车把
查看>>
在线学位课程_如何选择计算机科学学位课程
查看>>
React入门指南
查看>>
机器学习技术现状_教育技术如何颠覆传统学习的现状
查看>>
算法渐近性质分析_神奇宝贝解释的渐近分析:深入研究复杂性分析
查看>>
工厂用抽象类比接口_用简单的现实类比解释硬编码概念
查看>>
aws lambda使用_如何使用AWS Lambda和S3构建无服务器URL缩短器
查看>>
c专家编程/c陷阱_如何避免常见的初学者陷阱并像专家一样开始编码
查看>>
ruby on rails_我成为了Ruby on Rails和React的贡献者,你也可以
查看>>
React模式:集中式PropTypes
查看>>
esp freertos_如何开始使用FreeRTOS和ESP8266
查看>>
玻璃上的编码喜悦(+ 10史诗般的Epigrams)
查看>>
classlist使用方法_如何通过使用HTML5的classList API在没有jQuery的情况下操作类
查看>>
openstack文档_八分钟的升级,激发了文档贡献,以及更多的OpenStack新闻
查看>>
Google发布了SwiftShader,Linux上的Spatials更新以及更多游戏新闻
查看>>
openstack项目_新项目,安全性以及更多OpenStack新闻
查看>>