Sdílet prostřednictvím


Souhrn zpracování událostí ATL

Zpracování událostí modelu COM, je relativně jednoduchý proces.Existují tři hlavní kroky:

  • Implementace rozhraní události na objekt.

  • Že chce přijímat události objekt radí zdroj události.

  • Zdroj události Unadvise, když objekt již není třeba přijímat události.

Implementace rozhraní

Existují čtyři hlavní způsoby implementace rozhraní pomocí ATL.

Odvození z

Vhodné pro typ rozhraní

Je nutné provádět všechny metody *

Vyžaduje knihovnu typů v době spuštění

Rozhraní

Virtuální tabulka

Ano

Ne

IDispatchImpl

Dual

Ano

Ano

IDispEventImpl

Dispinterface

Ne

Ano

IDispEventSimpleImpl

Dispinterface

Ne

Ne

* Při použití třídy ATL podpory, nikdy musíte provést IUnknown nebo IDispatch metody ručně.

Poradenství a Unadvising zdroj události

Existují tři hlavní způsoby, poradenství a unadvising zdroj události pomocí ATL.

Radit funkce

Funkce Unadvise

Nejvhodnější pro použití s

Vyžaduje ke sledování cookie?

Komentáře

AtlAdvise, CComPtrBase::Advise

AtlUnadvise

Duální rozhraní nebo virtuální tabulka

Ano

AtlAdviseje globální funkce ATL.CComPtrBase::Advisepoužívá CComPtr a CComQIPtr.

IDispEventSimpleImpl::DispEventAdvise

IDispEventSimpleImpl::DispEventUnadvise

IDispEventImpl nebo IDispEventSimpleImpl

Ne

Parametry méně než AtlAdvise od základní třída neobsahuje více práce.

CComCompositeControl::AdviseSinkMap(TRUE)

CComCompositeControl::AdviseSinkMap(FALSE)

Ovládací prvky ActiveX v složený ovládací prvky

Ne

CComCompositeControl::AdviseSinkMapdá pokyn, že všechny položky jímky událostí mapy.Stejnou funkci unadvises položky.Tato metoda je volána automaticky podle CComCompositeControl třídy.

CAxDialogImpl::AdviseSinkMap(TRUE)

CAxDialogImpl::AdviseSinkMap(FALSE)

V dialogovém okně Ovládací prvky ActiveX

Ne

CAxDialogImpl::AdviseSinkMapdá pokyn a unadvises všechny ovládací prvky ActiveX v dialogovém okně prostředku.To se děje automaticky.

Viz také

Koncepty

Zpracování událostí a ATL

Podpora IDispEventImpl