ATL--创建简单的ATL之dll工程,添加类和类的接口并在MFC中调用

资源打包

开发环境

Windows Server 2012 

VS2010 Sp1

番茄助手

创建ATL简单dll工程

1、打开VS2010,新建ATL COM 项目,步骤:“文件” <-->“新建” <-->“项目”,选择“Visual C++” <-->“ATL 项目” ,填写“名称” DemoATL <-->“确定”。


接下来,下一步


接下来,下一步,ATL 项目向导,勾选 【支持COM+ 1.0】和【支持部件注册器】,其他默认,点击完成。勾选 【支持COM+ 1.0】和【支持部件注册器】使得程序可以在编译完成以后自动就注册成功,而无需手动进行dll的注册了


创建完成之后工程的各个视图的状态信息DemoATLPS是自动生成的东西,目前还不知道是干神马的


ATL工程添加类

切换到“类视图”或者“解决方案视图”,右键单击项目“DemoATL”<-->“添加” <-->“类”


下一步,选择“ATL”<-->“ATL简单对象”,之后点击“添加”


下一步,在“简称”下填入要增加的类名称,其他几项自动填入,除了“ProgID”项除外。“ProgID”项需要自动填入,否则后面无法正确的调用该组件以及该组件的FirstClass接口


下一步,选择“是”就阔以了


ATL给新生成的类添加接口Add

第一步,右键新建的接口选择菜单中的“添加”<-->"添加方法"


第二步

添加方法向导,在"方法名" 下输入Add。

增加两个输入参数:勾选【in】,选择参数类型LONG,输入参数名para1,点击“添加”。同样操作增加参数para2。

然后增加一个返回参数:先选择参数类型LONG*,再勾选【retval】,输入参数名result,点击添加。

点击“完成”即可,如果点击下一步,不需要填写信息,点击“完成”即可。


创建完类和类的接口之后的布局图


切换到解决方案资源管理器,展开项目“源文件”, 双击 DemoATL.idl打开IDL定义文件,看到如下代码,就是定义的COM方法了。

双击打开FirstClass.cpp 编辑代码:*result = para1 + para2;

编译运行,会生成dll文件,并自动注册到系统中。

如果不能注册DemoATL.dll下一个批处理文件,进行注册,注意注册文件的路径选绝对路径

@echo off
echo 默认情况下,不需要使用该批处理进行注册,DemoALL工程编译完成会自动注册的
echo 请注意注册的路径
echo 如需注册请删除批处理文件中的exit,执行DemoATL.dll的注册
pause
exit

regsvr32   "D:\newSvnCode\COM\DemoATL\Debug\DemoATL.dll"

pause

反注册批处理文件代码,注意反注册文件的路径选绝对路径

@echo off
echo 一般情况下不需要执行反注册
echo 请注意反注册的路径
echo 如需反注册请删除批处理文件中的exit,执行DemoATL.dll的反注册
pause
exit

regsvr32  /u  "D:\newSvnCode\COM\DemoATL\Debug\DemoATL.dll"

pause

通过MFC调用刚才创建的COM之ATL组件

新建一个MFC工程选对话框的即可,下图是创建的基本配置,以后的步骤选对话框剩下的一路next就可以了


创建完成时候的工程布局,并进行编译


MFC中添加ATL生成的自动化接口

在MFC中调用有一种很方便的方法,就是通过ClassWizard利用类型库生成包装类,不过有个前提就是com组件的接口必须是派生自IDispatch。

VS2010新建一个MFC基于对话框程序,调出类向导,点击“添加类”下拉菜单,选择“类型库中的MFC类”(From a type libarary)。


下一步

选“注册表”,然后在“可用类型库”中定位到FirstCOMLib<1.0>,接下来会出来该库中的所有接口,选择你想生成的接口包装类IFirstClass后点击“完成”,向导会自动生成相应的.h文件,这样你就可以在你的MFC工程中像使用普通类那样使用COM组件了.


添加类以后“类视图”的状态


编译一下程序


接下来,首先引入头文件   #include "CFirstClass.h"。为对话框程序添加一个“测试”按钮,添加按钮单击响应函数


编译调试调用代码,OK

  • 2
    点赞
  • 16
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值