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
exitregsvr32 "D:\newSvnCode\COM\DemoATL\Debug\DemoATL.dll"pause
反注册批处理文件代码,注意反注册文件的路径选绝对路径
@echo off
echo 一般情况下不需要执行反注册
echo 请注意反注册的路径
echo 如需反注册请删除批处理文件中的exit,执行DemoATL.dll的反注册
pause
exitregsvr32 /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
ATL--创建简单的ATL之dll工程,添加类和类的接口并在MFC中调用相关推荐
- 使用ATL创建简单ActiveX控件(一) —— 创建ATL项目
创建过程以VS2010为例,分三篇(创建ATL项目.添加方法/属性和枚举.添加连接点)演示.本篇演示创建ATL项目. 传送门: <使用ATL创建简单ActiveX控件(二) -- 添加方法/属性 ...
- 在MFC中调用DLL .
欲在.EXE 中调用PRO.DLL PRO.DLL中函数如: long MenuExecute( char *, long , HWND , long , char *, long , void * ...
- 创建WINCE6.0设备的DLL工程
打开VS2005,选择"File--->New--->Project",如下图: 图1 选择OK,如下图: 图2 选择Next,如下图: 图3 选择Next,如下图: ...
- 【Groovy】Groovy 脚本调用 ( Groovy 类中调用 Groovy 脚本 | 参考 Script#evaluate 方法 | 创建 Binding 对象并设置 args 参数 )
文章目录 一.Groovy 类中调用 Groovy 脚本 1.参考 Script#evaluate 方法分析 Groovy 类中调用 Groovy 脚本 2.创建 Binding 对象并设置 args ...
- ATL--创建简单的ATL之dll工程,添加“ATL简单对象”类的参数说明
添加"ATL简单对象"类一共分三个步骤 1.添加名称 2.文件类型选项 3.参数选项 添加接口 1.鼠标右键工程添加类 2.类型选择"ATL简单对象" 3.就在 ...
- 用ATL创建COM组件详细解说
一.创建一个模型(工程) MyProj. 二.给模型(工程)增加一个组件 MyCom. 三.给组件增加方法(函数) MyF1.MyF2.MyF3.MyF4. 一.创建模型(工程) MyProj 在VC ...
- 用ATL创建COM组件(详细分析了ATL创建的各种文件的意义,看完之后ATL就入门了)
转载自: http://www.cppblog.com/ice197983/articles/4178.html 其他不错的资源: http://technet.microsoft.com/zh ...
- 用ATL创建COM组件及实例讲解
一.创建一个模型(工程) MyProj. 二.给模型 ( 工程 ) 增加一个组件 MyCom . 三.给组件增加方法 ( 函数 ) MyF1 . MyF2 . MyF3 . MyF4 . 一.创建模型 ...
- 【转】用ATL创建COM组件详细解说
用ATL创建COM组件一.创建一个模型(工程) MyProj. 二.给模型(工程)增加一个组件 MyCom. 三.给组件增加方法(函数) MyF1.MyF2.MyF3.MyF4. 一.创建模型(工 ...
最新文章
- python中的元类_python中的元类
- 坚持不懈续集 (二) 初学者挑战学习Python编程30天
- 通过组策略禁用U盘执行病毒文件
- mysql 使用EF6.0CodeFirst
- Javascript编程基础1
- 数据库 -- 由数据库连接池引出的三种设计模式
- 为什么是错的?????
- SQL语句:SQLwhile(0=0)与while @@fetch_status=0.
- 简单代码生成器原理剖析(一)
- 高通量数据中批次效应的鉴定和处理(六)- 直接校正表达矩阵
- 英特尔傲腾存储业务主管已离职 因个人原因离开
- Boost Asio Examples(整理)
- 拓端tecdat|R语言自适应平滑样条回归分析
- OFFICE技术讲座:双层字体引擎的提出
- 8 EDA技术实用教程【组合电路的Verilog的设计】
- Oracle Primavera P6EPPM Mobile/App 安卓移动端分享(长期更新)
- MATLAB GBK编码
- 泛泰A860版本的识别
- 创意云渲染农场与《熊出没》
- python大学生生活信息交互平台的设计与实现毕业设计-附源码031315
热门文章
- linux 关闭虚拟化,虚拟化之KVM virsh常用命令篇
- oracle进入到root用户,Linux环境中普通用户切换到root用户问题
- java socket长连接怎么维持_socket长连接的维持
- 你需要了解的HashMap、HashTable和ConcurrentHashMap的区别
- 二维卷积神经网络的结构理解
- python实战===用python识别图片中的中文
- Android基础巩固进阶
- JAVA_MyEclipse常见配置NETGEAR路由器如何设置
- 拟牛顿法/Quasi-Newton,DFP算法/Davidon-Fletcher-Powell,及BFGS算法/Broyden-Fletcher-Goldfarb-Shanno...
- 高性能服务器编程 Twisted编程基础