C++ VS 2008中ATL的创建,使用。并在C++项目以及C#项目中进行调用测试

一、前言
  1、本回讲解的是在 
VS 2008 下的使用ATL. 并使用Win 32 ConsoleApplication进行测试以及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,参数如下图,有三个参数

 

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

?
STDMETHODIMP CFunTest::Sum(LONG num1, LONG num2,LONG* pVal)
{
     //TODO: Add your implementation code here
     *pVal= num1 + num2;
     return S_OK;
}

 

三、新建Win 32 Application进行测试

?
#include"E:\..\ATLProjectTest\ATLProjectTest_i.h"
#include"E:\..\ATLProjectTest\ATLProjectTest_i.c"
int main( void )
{
  
     //声明HRESULT和iFun接口指针
     IFunTest* iFun = NULL;
  
     //初始化COM
     HRESULThr = CoInitialize(NULL);
  
     //使用SUCCEEDED宏并检查我们是否能得到一个接口指针
     if (SUCCEEDED(hr))
     {
         hr=CoCreateInstance(CLSID_FunTest,NULL,CLSCTX_INPROC_SERVER,IID_IFunTest,( void **)&iFun);
     }
  
     //如果成功,则调用Sum方法,否则显示相应的出错信息
     if (SUCCEEDED(hr))
     {
         long ReturnValue;
         iFun->Sum(30,32,&ReturnValue);
         cout<< "The return value for 30 + 32 is :" <<ReturnValue << endl;
         iFun->Release();
     }
     else
     {
         cout<< "CoCreateInstance Failed." << endl;
     }
     //释放COM
     CoUninitialize();
     return 0;
}

  

显示:

四、在C# 项目中进行测试步骤

1、添加引用(选择Com),找到对应的DLL

2、

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值