可连接点对象及示例(二)
来源:互联网 发布:ubuntu 16.04进入图形 编辑:程序博客网 时间:2024/05/18 08:52
转载请标明是引用于 http://blog.csdn.net/chenyujing1234
例子代码:(包括客户端与服务端)
http://www.rayfile.com/zh-cn/files/de82908f-7309-11e1-9db1-0015c55db73d/
接着我的上一篇文章可连接点对象及示例(一),,接下来我们来创建一个连接点的示例。
1、创建ATL智能设备工程。
在创建完工程后到类视图中右击
此时出现了CProxy_IAddEvents<T>和IAdd
2、为IAdd添加一个Add(int a, int b)方法
3、为_IAddEvents接口添加ExecutionOver(int Result)方法。
该方法来用通知用户已经执行完IAdd接口中的Add方法
接下来试编译一下,发现提示如下错误
1>Add.cpp
1>c:\documents and settings\administrator\桌面\connectioncon\Add.h(73) : error C2039: 'UpdateRegistry' : is not a member of 'CAdd'
1> c:\documents and settings\administrator\桌面\connectioncon\Add.h(29) : see declaration of 'CAdd'
1>c:\documents and settings\administrator\桌面\connectioncon\Add.h(73) : error C2065: 'UpdateRegistry' : undeclared identifier
参考文章http://social.microsoft.com/Forums/fi-FI/windowsembeddedcezhchs/thread/7046a061-daf5-4b28-a738-0b619307403f
后把Add.h里的
#ifndef _CE_DCOMDECLARE_REGISTRY_RESOURCEID(IDR_ADD)#endif
改为
//#ifndef _CE_DCOMDECLARE_REGISTRY_RESOURCEID(IDR_ADD)//#endif
4、修改_IAddEvents的接口定义。
原始的接口被定义为dispInterface,我们需要修改成继承于IUnknown接口,从而减少接口函数的数量。
interface _IAddEvents : IUnknown{[id(1), helpstring("method ExecutionOver")] HRESULT ExecutionOver(int Result);};
5、实现连接点方法.
选中CAdd类,右击,选中添加->添加连接点菜单项.(见上图)
此时出现了上面的类,这个类将关心COM对象如何调用客户端接口。
接下来实现Add方法
STDMETHODIMP CAdd::Add(int a, int b){// TODO: 在此添加实现代码// 做一下延迟处理Sleep(1000);// 触发执行完毕命令Fire_ExecutionOver(a+b);return S_OK;}
6、发布。自动完成注册.
7、编写客户端来调用带连接点事件的COM
客户端测试后出现如下问题
/*
CoCreateInstance提示找不到接口点
!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
待博客更新更修改这个BUG
*/
hr =pAdd.CoCreateInstance(CLSID_Add);
======================
2012-03-25补充以下解决上述BUG方法:
通过regsvrce.exe注册我们的dll.
regsvrce.exe可到我的资源里下载:
<<regsvrce.rar>>
这里还推荐大家参考我的另一篇文章
Windows CE 系统进程外组件应用开发 .
- 可连接点对象及示例(二)
- 可连接点对象及示例(一)
- 10.可连接对象和连接点原理
- COM原理及应用---- 可连接对象
- COM原理及应用----可连接对象
- COM原理及应用---可连接对象
- COM中的可连接对象与连接点机制及其MFC程序实现
- COM中的可连接对象与连接点机制及其MFC程序实现
- COM中的可连接对象与连接点机制及其MFC程序实现
- COM中的可连接对象与连接点机制及其MFC程序实现
- COM中的可连接对象与连接点机制及其MFC程序实现
- com可连接对象的实现
- Tapestry使用示例及注意点总结
- 内核对象--可等待计时器WaitableTimer(二)
- SpringMVC,Mybatis,FreeMarker连接mycat示例(二)
- 连接MYSQL数据库的方法及示例
- 连接MYSQL数据库的方法及示例
- 连接MYSQL数据库的方法及示例
- sqlserver2012分页offset
- linux系统库函数之strcmp、strncmp
- power designer
- 一个较快速的JSON库——Fastjson
- SAP Workflow Add Attachment to Workflow and Generic Object Services
- 可连接点对象及示例(二)
- BMP 格式解析
- android 解析xml的三种方式(DOM,SAX,PULL)之SAX(转载收藏)
- 第五周实验报告4
- 关于/etc/host?
- 【*】POJ-3294(后缀数组)(Life Forms)
- Qt/E服务器客户端架构
- windows 使用cmd命令行执行php
- 酸味养生清脂滋润有助瘦身