实现事件处理接口
ATL 利用处理事件所需的所有三个元素:实现事件接口、建议事件源和取消推荐事件源。 需要执行的具体步骤取决于事件接口的类型以及应用程序的性能要求。
使用 ATL 实现接口的最常见方法是:
直接从自定义接口派生。
从 IDispatchImpl 派生,用于类型库中所述的双接口。
从 IDispEventImpl 派生,用于类型库中描述的 dispinterface。
从 IDispEventSimpleImpl 派生,用于类型库中未描述的 dispinterface,或者想要通过在运行时不加载类型信息来提高效率。
如果要实现自定义或双接口,则应通过调用 AtlAdvise 或 CComPtrBase::Advise 来推荐事件源。 需要跟踪调用自己返回的 Cookie。 调用 AtlUnadvise 中断连接。
如果要使用 IDispEventImpl
或 IDispEventSimpleImpl
实现 dispinterface,则应调用 IDispEventSimpleImpl::DispEventAdvise 来建议事件源。 调用 IDispEventSimpleImpl::DispEventUnadvise 中断连接。
如果将 IDispEventImpl
用作复合控件的基类,则会使用 CComCompositeControl::AdviseSinkMap 自动建议和取消推荐接收器映射中列出的事件源。
IDispEventImpl
和 IDispEventSimpleImpl
类为你管理 Cookie。
另请参阅
反馈
https://aka.ms/ContentUserFeedback。
即将发布:在整个 2024 年,我们将逐步淘汰作为内容反馈机制的“GitHub 问题”,并将其取代为新的反馈系统。 有关详细信息,请参阅:提交和查看相关反馈