共用方式為


處理事件的 ATL 摘要

一般而言,處理 COM 事件是相當簡單的程序。 有三個主要步驟:

  • 實作在物件的事件介面。

  • 建議您事件來源的物件要接收事件。

  • Unadvise 事件來源,當您的物件不再需要接收事件。

實作介面

使用 ATL 實作介面,有四種主要方式。

衍生自

適用於介面型別

您必須實作所有 methods*

需要型別程式庫在執行階段

介面

Vtable

IDispatchImpl

雙重

IDispEventImpl

分配介面

IDispEventSimpleImpl

分配介面

*在使用 ATL 支援類別中的時,就不需要手動執行 IUnknownIDispatch 方法。

建議和 Unadvising 事件來源

使用 ATL,會通知和 unadvising 事件來源三種主要方式。

告知函式

Unadvise 函式

適用。

要求您記錄 Cookie?

註解

AtlAdviseCComPtrBase::Advise

AtlUnadvise

Vtable 或雙重介面

AtlAdvise 是全域 ATL 函式。 CComPtrCComQIPtr使用CComPtrBase::Advise

IDispEventSimpleImpl::DispEventAdvise

IDispEventSimpleImpl::DispEventUnadvise

IDispEventImplIDispEventSimpleImpl

少數參數小於 AtlAdvise ,因為基底類別完成更多工作。

CComCompositeControl::AdviseSinkMap (True)

CComCompositeControl::AdviseSinkMap (錯誤)

在複合控制項的 ActiveX 控制項

CComCompositeControl::AdviseSinkMap 建議在事件接收對應中的所有項目。 相同的函式 unadvises 輸入。 這個方法是由 CComCompositeControl 類別自動呼叫。

CAxDialogImpl::AdviseSinkMap (True)

CAxDialogImpl::AdviseSinkMap (錯誤)

在 對話方塊中的 ActiveX 控制項

CAxDialogImpl::AdviseSinkMap 對話方塊資源建議和 unadvises 所有 ActiveX 控制項。 這會自動進行。

請參閱

概念

事件處理常式和 ATL

支援 IDispEventImpl