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


     一、前言
      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,参数如下图,有三个参数

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

    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
    	HRESULT hr = 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、引用命名空间,(引用对应的命名空间)

    3、new实例,调用函数

    可参考:.Net 互操作性http://www.cnblogs.com/linlf03/archive/2011/09/24/2189621.html

  • 相关阅读:
    Notebook ++ 设置护眼背景
    python 设置 excel 单元格颜色填充和字体效果
    python 设置 Excel 单元格边框线的各种风格
    python 对 excel sheet 的插入、复制、删除、重命名、设置标签颜色操作
    python 利用插入空行的方式制作工资条表格
    python 更新 openpyxl 到 3.0
    python 模拟 excel 宏、VBA 制作工资条表格
    Windows 系统
    python-pptx 实践 6.2:气泡图
    python-pptx 实践 6.1:添加五种基本图形(柱形图、折线图、饼图、条形图、散点图)
  • 原文地址:https://www.cnblogs.com/linlf03/p/2254233.html
Copyright © 2020-2023  润新知