当前位置:   article > 正文

C++ VS 2008中ATL的创建,使用。并在C++项目中进行调用测试_vc atl添加方法

vc atl添加方法

一、前言
  1、本回讲解的是在 VS 2008 下的使用ATL. 并使用Win 32 Console Application进行测试以及C#项目进行测试(调用COM).

    2、这第一个组件,除了所有 COM 组件必须的 IUnknown 接口外,我们再实现一个自己定义的接口 IFunTest,它有一个简单的函数: Sum()完成两个数值的加法

  3、ATL的介绍

      ATL本来被设计成一种书写快捷的小的COM组件。

    ATL特性:(1)C++能完成的所有功能。

                     (2)没有外部程序库,除非你想要使用它。

                     (3) 一种抽象对象和接口的相对高级的方式。

        (4)类集合的自动处理,目标创建,参考计算和查询界面。 标准接口的实现。

           (5) 用C++写一个独立的ActiveX控件,你必须亲自书写实现每个接口的每种方法。

二、1、创建ATL Project

步骤1:建立一个解决方案。   步骤2:在 该解决方案中,新建一个 vc++ 的 ATL 项目。见下图

 选择Dynamic-link library(DLL)

 2、向工程中添加ATL对象

 选择ATL Simple Object

 名字为FunTest

 Interface选择Custom

 3、在接口中添加方法.(在类视图中)

方法名为Sum,参数如下图,有三个参数

 

接口方法的实现, 这个太简单了

  1. STDMETHODIMP CFunTest::Sum(LONG num1, LONG num2, LONG* pVal)
  2. {
  3. // TODO: Add your implementation code here
  4. *pVal = num1 + num2;
  5. return S_OK;
  6. }

 

三、新建Win 32 Application进行测试

  1. #include "E:\..\ATLProjectTest\ATLProjectTest_i.h"
  2. #include "E:\..\ATLProjectTest\ATLProjectTest_i.c"
  3. int main(void)
  4. {
  5. //声明HRESULT和iFun接口指针
  6. IFunTest * iFun = NULL;
  7. //初始化COM
  8. HRESULT hr = CoInitialize(NULL);
  9. //使用SUCCEEDED宏并检查我们是否能得到一个接口指针
  10. if (SUCCEEDED(hr))
  11. {
  12. hr = CoCreateInstance(CLSID_FunTest,NULL,CLSCTX_INPROC_SERVER,IID_IFunTest,(void**)&iFun);
  13. }
  14. //如果成功,则调用Sum方法,否则显示相应的出错信息
  15. if (SUCCEEDED(hr))
  16. {
  17. long ReturnValue;
  18. iFun->Sum(30,32,&ReturnValue);
  19. cout << "The return value for 30 + 32 is :" << ReturnValue << endl;
  20. iFun->Release();
  21. }
  22. else
  23. {
  24. cout << "CoCreateInstance Failed." << endl;
  25. }
  26. //释放COM
  27. CoUninitialize();
  28. return 0;
  29. }


声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/盐析白兔/article/detail/316090
推荐阅读
相关标签
  

闽ICP备14008679号