📄 是用atl开发支持事件的组件.txt
字号:
作者:rick1126
email: rickzhang@sina.com
日期:7/7/2001 6:31:58 PM
方法之一:
使用传统的回调函数方式, 区别在于前者需要客户端传递一个实现函数的指针, 后者则需要传递一个服务端公开的回调接口.
限制条件:
1. 使用前绑定
2. 虽然函数实现在客户端, 不过服务端除了在IDL里面声明方法, 也需要提供一个空方法实现, 虽然不会用到
客户端:
1. 需要实现公开的回调接口的方法
2. 使用Advise/Unadvise将实现的回调函数接口传递给服务端, 和撤销接口
3. 针对VB客户端, 需要使用 implement 声明回调接口
方法二:
使用连接点技术. 因为需要支持双接口, 而且事件接口必须是Dispatch 接口, 因此可以使用后绑定, 自然 IDispatch 的基本方法需要在客户端实现.
例如:
dispinterface _IMathEvents
{
properties:
methods:
[id(1),helpstring("method ComputationComplete")] HRESULT ComputationComplete([in]long lResult);
};
客户端:
1. 需要使用ATLAdvise/ATLUnadvise进行维护
相关的例子见后面两个帖子, 怕字数问题.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -