Step by Step: 基于MFC下的COM组件开发-Helloworld
来源:互联网 发布:蓝牙模块设置软件 编辑:程序博客网 时间:2024/06/08 07:14
最近在研究COM组件的开发,于是便想找一个完整的COM Helloworld例程,搜索的结果是要么代码繁复,要么就是不够完整。在此特将COM的建模步骤以图文并貌的方式写下,以飨后来者。
开发环境:Visual Studio 2013
Step 1-3:
新建一个MFC DLL 工程,工程名称我们可以命名为COMHelloworld
注意勾选附加功能中的 “自动化” 模块
在MFC生成的项目COMHelloworld.cpp,我们可以看到构成一个COM组件的基本框架,MFC模板已经为我们搭建好了,下面可以建立Helloworld了
Step 2-3:
添加COM类 CTest,并添加接口 Helloworld
选择”项目”->”添加类…”,添加一个”MFC 类”,其中基类选择”CCmdTarget”,自动化方式选择为 “可按类型 ID 创建”
创建完成后,在类视图中为ITest添加接口 Helloworld
Step 3-3:
上述准备工作完成,终于可以编写 HelloWorld 代码了!
void CTest::HelloWorld(){ AFX_MANAGE_STATE(AfxGetStaticModuleState()); // TODO: 在此添加调度处理程序代码 AfxMessageBox(_T("Hello World!"));}
多么简单,你只写了一行代码,一个最简单的COM组件构建完成了。
等等,也许我们还需要测试一下这个COM是否可以运行…
1. MFC 中调用 COM
在现有工程中添加一个新工程 “基于对话框的MFC应用程序”,然后在该工程中选择”项目”->”添加类…”->选中”添加TypeLib 中的 MFC 类”
在可用类型库中选择 “COMHelloworld”,点击按钮 生成所有类,见下图
在对话框程序中添加一个测试按钮,并添加该按钮的点击事件…
在对话框程序中添加COM类的头文件
#include "CTest.h"
在按钮点击事件中添加测试代码
void CMFCApplicationDlg::OnBnClickedButton1(){ // TODO: 在此添加控件通知处理程序代码 CTest test; COleException e; if (test.CreateDispatch(_T("COMHelloworld.Test"), &e)) { test.HelloWorld(); test.ReleaseDispatch(); } else TRACE("CreateDispatch() failed, COM Error Codes: 0x%08lX\n", e.m_sc);}
COM调用中常见的错误代码:
0x800401F0 OLE模块没有初始化,需要在程序初始化时添加
0x800401F3 检查一下你的 COM 调用字串是否书写正确,在本例中COM调用字串是”COMHelloworld.Test”COM Error Codes (Generic)
https://msdn.microsoft.com/en-us/library/windows/desktop/dd542643%28v=vs.85%29.aspx
好了,测试运行!
2. C# 中调用 COM
新建一个窗口类的工程,然后添加引用 “COMHelloworld”
在窗口中添加测试按钮,添加按钮点击事件处理代码
private void button1_Click(object sender, EventArgs e) { COMHelloworld.TestClass test = new COMHelloworld.TestClass(); test.HelloWorld(); }
本示例的完整代码下载地址:
http://download.csdn.net/detail/sybifei/8586725
- Step by Step: 基于MFC下的COM组件开发-Helloworld
- 基于MATLAB R2009a 的COM组件与VC编程体会 Step by Step
- Step-by-Step搭建Linux下的java开发环境
- Step-by-Step搭建Linux下的java开发环境
- COM指南 (Step by Step COM Tutorial)-下(1)
- COM指南 (Step by Step COM Tutorial)-下(2)
- COM指南 (Step by Step COM Tutorial)-下(2)
- Step by Step COM Tutorial
- Create com step by step
- iPhone开发step by step
- RMI开发 Step By Step
- 【com】番外篇 Step by Step COM Tutorial
- ASP.NET组件编程step by step
- ASP.NET组件设计Step by Step
- ASP.NET组件编程step by step
- ASP.NET组件编程step by step
- ASP.NET组件编程step by step
- ASP.NET组件编程step by step
- C++ 异常对象
- 统计学习方法—学习笔记(1)
- 二分查找模板
- 第四周项目3 用对象数组操作长方柱类
- PHP上传原理
- Step by Step: 基于MFC下的COM组件开发-Helloworld
- 霍夫曼编码
- 大龄程序员对学习移动开发的一点想法
- Android加载Html的方法
- 结构体返回引用或值的小区别
- 仿IE顶部的警告条,可以关闭
- Solr查询语法笔记——查询参数缩写
- C++排序(合并排序)
- POJ 2352 star (树状数组)