VS2010&MFC下创建COM组件的一个小Demo
VS2010&MFC下创建COM组件的一个小Demo
1.VS2015中,新建一个MFC项目,取名TestCom,如下图所示:
图表 1
图表 2
- 新建一个ATL项目ATLAlgo单独给算子用。右击解决方案“TestCom”——添加——新建项目——选择ATL项目——取名ATLAlgo——点击确定,如下图所示:
图表 3
应用程序类型选择“动态链接库(DLL)”,支持选项选择“允许合并代理/存根代码”,“支持MFC”,“安全开发生命周期(SDL)检查”,如下图所示:
图表 4
3.添加com组件。右击“ATLAlgo”项目——添加——类——选择ATL简单对象——点击添加,如下图:
图表 5
类取名为Algo1,如下图:
图表 6
线程模型选选择“单元”,接口选“双重”,支持选“ISupportErrorInfo”,聚合选“是”,点击完成,如下图:
图表 7
4.在com组件中添加方法。如下图:
图表 8
我们写个简单的返回两个数相加的函数:
Sum(long a,long b,*long nRet)
{
nRet = a+b;
}
首先添加3个参数,分别如下设置:
图表 9 添加参数a
图表 10 添加参数b
图表 11 添加参数nRet(该参数为返回值)
图表 12 方法函数名为Sum
选择local选项:
图表 13 选择local选项
添加函数内容:
图表 14添加方法函数实体
5.此时右击项目AtLAlgo,点击重新生成,则在工程文件夹下的Debug文件夹下会生成ATLAlgo.dll,即为dll形式的com组件,如下图:
图表 15
6.右击项目AtLAlgo——属性——生成事件——后期生成事件——添加命令行:
regsvr32 $(TargetPath)
注:为了在编译的时候注册ATLAlgo.dll
copy $(TargetPath) $(SolutionDir)TestCom
注:为了将debug文件夹下的ATLAlgo.dll拷贝到TestCom项目的TestCom文件夹下,方便TestCom项目中调用该组件。
如下图:
图表 16 添加命令行
7.在TestCom项目的TestComDlg.h文件中添加
#import “ATLAlgo.dll” no_namespace//1.添加ATLAlgo.dll
并在类中定义
CComPtr m_ptrAlgo1Com; //2.添加智能指针CComPtr替代接口指针IAlgo1,从而让程序自动实现AddRef和Release,防止内存泄漏。注:释放智能指针直接赋值m_ptrAlgo1COM = NULL
如下图:
图表 17
8.添加初始化com组件的代码,如下:
图表 18
9.主界面添加一个Button1,并添加Button1的响应函数
void CTestComDlg::OnBnClickedButton1()
{
// TODO: 在此添加控件通知处理程序代码
long nRet = 0;
nRet = m_ptrAlgo1Com->Sum(1,2);//调用com组件中的算子Sum( )
CString str;
str.Format(_T(“1+2 = %d”),nRet);
AfxMessageBox(str);
}
运行结果如下:
</div>
上一篇: JMeter的使用
下一篇: Jmeter的简单使用