Implementowanie interfejsu obsługi zdarzeń
Usługa ATL pomaga we wszystkich trzech elementach wymaganych do obsługi zdarzeń: implementowaniu interfejsu zdarzeń, doradzaniu źródła zdarzeń i nienadzorowaniu źródła zdarzeń. Dokładne kroki, które należy wykonać, zależą od typu interfejsu zdarzeń i wymagań dotyczących wydajności aplikacji.
Najczęstsze sposoby implementowania interfejsu przy użyciu atl to:
Wyprowadzanie bezpośrednio z interfejsu niestandardowego.
Wyprowadzanie z interfejsów IDispatchImpl opisanych w bibliotece typów.
Wyprowadzanie z IDispEventImpl dla dispinterfaces opisanych w bibliotece typów.
Wyprowadzanie z IDispEventSimpleImpl dla dispinterfaces nie opisano w bibliotece typów lub gdy chcesz zwiększyć wydajność, nie ładując informacji o typie w czasie wykonywania.
W przypadku implementowania niestandardowego lub podwójnego interfejsu należy poinformować źródło zdarzeń przez wywołanie metody AtlAdvise lub CComPtrBase::Advise. Musisz śledzić plik cookie zwrócony przez połączenie samodzielnie. Wywołaj metodę AtlUnadvise , aby przerwać połączenie.
W przypadku implementowania narzędzia dispinterface przy użyciu metody IDispEventImpl
lub IDispEventSimpleImpl
, należy poinformować źródło zdarzeń, wywołując metodę IDispEventSimpleImpl::D ispEventAdvise. Wywołaj metodę IDispEventSimpleImpl::D ispEventUnadvise , aby przerwać połączenie.
Jeśli używasz IDispEventImpl
jako klasy bazowej kontrolki złożonej, źródła zdarzeń wymienione na mapie ujścia będą zalecane i nienadzorowane automatycznie przy użyciu CComCompositeControl::AdviseSinkMap.
Klasy IDispEventImpl
i IDispEventSimpleImpl
zarządzają plikiem cookie.