博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
可连接点对象及示例(二)
阅读量:2398 次
发布时间:2019-05-10

本文共 1474 字,大约阅读时间需要 4 分钟。

 

转载请标明是引用于

 例子代码:(包括客户端与服务端)

 

 

接着我的上一篇文章,,接下来我们来创建一个连接点的示例。

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

参考文章

后把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>>

这里还推荐大家参考我的另一篇文章

你可能感兴趣的文章
poj2255 Tree Recovery
查看>>
zoj 1745 Are We There Yet?
查看>>
UVA100 The 3n + 1 problem
查看>>
hdu1754 I Hate It
查看>>
hdu 1166 敌兵布阵(求区间的和,单节点更新)
查看>>
hiho一下 第四十四周 题目1 : 博弈游戏·Nim游戏
查看>>
poj2299 Ultra-QuickSort(线段树计数问题)
查看>>
hdu4565 So Easy!(矩阵快速幂)
查看>>
poj2528 Mayor's posters(线段树,离散化)
查看>>
hdu4578(三个更新操作,三个求值操作)
查看>>
并查集(初级)小结
查看>>
Treap
查看>>
计算机系统结构 计算机指令集结构
查看>>
计算机系统结构 输入/输出系统
查看>>
02-线性结构1 两个有序链表序列的合并
查看>>
HDU 1080 DP LCS
查看>>
HDU 3308 线段树+区间合并
查看>>
ASP.NET 入手页面控件及事件触发
查看>>
HDU 4123 树状DP+RMQ
查看>>
vim配置文件(持续更新)
查看>>