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 |
Dual |
Ano |
Ano |
|
Dispinterface |
Ne |
Ano |
|
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 |
---|---|---|---|---|
Duální rozhraní nebo virtuální tabulka |
Ano |
AtlAdviseje globální funkce ATL.CComPtrBase::Advisepoužívá CComPtr a CComQIPtr. |
||
Ne |
Parametry méně než AtlAdvise od základní třída neobsahuje více práce. |
|||
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. |
||
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. |