Скачать презентацию
Идет загрузка презентации. Пожалуйста, подождите
Презентация была опубликована 11 лет назад пользователемИнесса Тимина
1 Косвенно-вызываемые интерфейсы
2 Опрос объекта IMouseAction WhereYouClicked()
3 Косвенно-вызываемый интерфейс IIngoing IveBeenClicked() IMouseEvents [ptrIMouseEvents]
4 Схема двустороннего обмена 1) Клиент реализует свой интерфейс (sink object) 2) При создании компонента указатель передается Коклассу 3) При событии, происходит вызов методов исходящего интерфейса
5 Последовательность двустороннего обмена CreateInstance() Release() Advise(pSinkIface) UnAdvise() FireEvent()ISink IIngoing
6 Архитектура соединяемых объектов КлиентСервер CPTwo CPOne IConnectionPointContainer ISomeCustomInterface _IOutBound
7 IConnectionPointContainer interface IConnectionPointContainer : IUnknown { //задай мне перечисление всех объектов точек соединения HRESULT EnumConnectionPoints ( [out] IEnumConnectionPoints ** ppEnum ); //Есть у вас такая-то точка соединения? HRESULT FindConnectionPoint ( [in] REFIID riid, [out] IConnectionPoint ** ppCP ); }
8 IEnumConnectionPoints interface IEnumConnectionPoints : IUnknown { HRESULT Next( [in] ULONG cConnections, [out, size_is(cConnections), length_is(*pcFetched)] LPCONNECTIONPOINT * ppCP, [out] ULONG * pcFetched ); HRESULT RemoteNext( [in] ULONG cConnections, [out, size_is(cConnections), length_is(*pcFetched)]LPCONNECTIONPOINT * ppCP, [out] ULONG * pcFetched ); HRESULT Skip( [in] ULONG cConnections ); HRESULT Reset( void ); HRESULT Clone( [out] IEnumConnectionPoints ** ppEnum ); }
9 IConnectionPoint interface IConnectionPoint : IUnknown { //получить GUID данного интерфейса HRESULT GetConnectionInterface([out] IID * pIID); //Получить IID контейнера, содержащего точку соединения HRESULT GetConnectionPointContainer( [out] IConnectionPointContainer ** ppCPC ); //Устанавливаем связь HRESULT Advise([in] IUnknown * pUnkSink,[out] DWORD * pdwCookie ); //Разъединяемся HRESULT Unadvise( [in] DWORD dwCookie ); //Какие еще клиенты подсоединены к этой точке? HRESULT EnumConnections( [out] IEnumConnections ** ppEnum ); }
10 IEnumConnections interface IEnumConnections : IUnknown { typedef struct tagCONNECTDATA { IUnknown * pUnk; DWORD dwCookie; } CONNECTDATA; HRESULT Next([in] ULONG cConnections, [out, size_is(cConnections), length_is(*pcFetched)] LPCONNECTDATA rgcd, [out] ULONG * pcFetched ); HRESULT RemoteNext([in] ULONG cConnections, [out, size_is(cConnections), length_is(*pcFetched)] LPCONNECTDATA rgcd, [out] ULONG * pcFetched); HRESULT Skip([in] ULONG cConnections); HRESULT Reset(void); HRESULT Clone([out] IEnumConnections ** ppEnum); }
Еще похожие презентации в нашем архиве:
© 2024 MyShared Inc.
All rights reserved.