社区
ATL
帖子详情
请问如何使用IDispatchImpl实现基于IDispatch连接点Sink
ATField
2004-07-13 10:56:18
通过IDispEventImpl可以实现基于IDispatch连接点Sink。
不过我想使用IDispatchImpl来做方便一些。
但是使用中发现IDispatchImpl无法接受到阿,而IDispEventImpl就可以,不知道为何,请指教。
另外要说明的是,我要实现的ISomeSink接口是来自另外一个应用程序的,比如Word。
...全文
506
5
打赏
收藏
请问如何使用IDispatchImpl实现基于IDispatch连接点Sink
通过IDispEventImpl可以实现基于IDispatch连接点Sink。 不过我想使用IDispatchImpl来做方便一些。 但是使用中发现IDispatchImpl无法接受到阿,而IDispEventImpl就可以,不知道为何,请指教。 另外要说明的是,我要实现的ISomeSink接口是来自另外一个应用程序的,比如Word。
复制链接
扫一扫
分享
转发到动态
举报
AI
作业
写回复
配置赞助广告
用AI写文章
5 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ATField
2004-07-13
打赏
举报
回复
谢谢。
我想再请问一下,IDispatchImpl和IDispEventImpl具体的区别在哪里?如果要用IDispatchImpl实现Sink,我应该具体怎么做呢?
gracezhu
2004-07-13
打赏
举报
回复
ATL的模板类IDispatchImpl只支持双接口,不支持dispinterface,源对象的出接口(outgoing interface)往往是dispinterface,所以接收器对象要通过其他的途径来实现事件接口。ATL提供了两个模板类IDispEventImpl和IDispEventSimpleImpl用于接收器对象的实现,IDispEventImpl要借助于类型库所提供的出接口类型信息,这是最简单的实现方法,而IDispEventSimpleImpl不需要类型库的支持,这是效率最高的方法。这两种方法都需要用到事件接收器映射表(event sink map)
看ATL技术内幕
wangweixing2000
2004-07-13
打赏
举报
回复
通过IDispEventImpl可以实现基于IDispatch连接点Sink。
不过我想使用IDispatchImpl来做方便一些。
这样说是错误的,如果要用IDispatchImpl来做你必须手动把IDispEventImpl中的那几个方法重新包装一遍,除非你特别精通com要不然劝你放弃!
ATField
2004-07-13
打赏
举报
回复
我觉得比较奇怪的是,不管是Sink还是IDispatch,他们本质都应该是可以通过IDispatch接口来Invoke各个函数,有没有SinkMap应该区别不大阿。MSDN上说:IDispatchImpl可以用来实现Sink,只是每个函数都需要实现,而IDispEventImpl则不需实现每个函数。这是为什么?按照MSDN上的说法,应该IDispatchImpl是可以的才对阿?望指教一二。多谢。
gracezhu
2004-07-13
打赏
举报
回复
事件接收器是一个类,从IDispEventImpl继承。IDispEventImpl是ATL中的一个模板,专用于接收IDispatch接口的事件。IDispatchImpl不支持事件.你还是直接从IDispEventImpl派生把
体会COM
连接点
与
实现
接收器
客户端通过调用`IConnectionPoint::Advise`方法,将自身作为接收器(
Sink
)注册到服务器的
连接点
上,从而建立起事件通知的连接。 接收器对象,即事件接收者,也是一个COM对象,通常
使用
ATL(Active Template ...
借助模板类自动
实现
COM
连接点
接收器(
Sink
)
最初的代码源自free2000fly的一个标准的 COM
连接点
接收器(
Sink
)的
实现
,
使用
相当简单!!!,作者封装了不少工作,但调用时的代码还可以再封装一下,最后只要拷贝并修改
Sink
实现
类的Invoke就好了。 以下是这个代码...
借助模板类自动
实现
COM
连接点
接收器(
Sink
)更新
之前在借助模板类自动
实现
COM
连接点
接收器(
Sink
)中对原作者的代码进一步封装,弄清了
连接点
使用
的原理,在看ATL代码的过程中,发现ATL本身就提供了AtlAdvise/AtlUnadvise这样的机制来简化
连接点
的
使用
,...
纯C++类接收ATL
连接点
事件
ATL中的
连接点
提供了组件与客户端相互通信的渠道,
连接点
在脚本语言中
使用
比较方便,但在C++中
使用
一般要自己
实现
I
Dispatch
相关接口函数,
使用
起来很不方便,本文介绍在一般的C++工程中
使用
ATL,创建
Sink
的方式 ...
COM
连接点
- 一个COM接口
实现
多个
连接点
(3)
之前讲到一个COM接口可以
实现
多个
连接点
。我们就来写个例子。 其实,我还真不知道怎么用ATL
ATL
3,248
社区成员
48,529
社区内容
发帖
与我相关
我的任务
ATL
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
复制链接
扫一扫
分享
社区描述
ATL,Active Template Library活动(动态)模板库,是一种微软程序库,支持利用C++语言编写ASP代码以及其它ActiveX程序。
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章