Re[10]: IWebBrowser2 с нуля
От: sidorov18 США  
Дата: 19.11.10 10:58
Оценка:
Здравствуйте, cls, Вы писали:

cls>Здравствуйте, sidorov18, Вы писали:


S>>Здравствуйте, cls, Вы писали:


S>>>>вот эти?

S>>>>Как и все события..
S>>>>Посмотри в ATL класс IDispEventImpl методы DispEventAdvise/DispEventUnadvise

cls>>>Без ATL.


S>>Ну посмотри, как там, и перенеси этот код))) внутри там все те же вызовы.

S>>вообще технология называется Connection Point.
cls>А где именно внутри? Я ATL не пользовался раньше.

вообще выделенное выше

вот код из atlbase.inl:

/////////////////////////////////////////////////////////////////////////////
// Connection Point Helpers

ATLINLINE ATLAPI AtlAdvise(IUnknown* pUnkCP, IUnknown* pUnk, const IID& iid, LPDWORD pdw)
{
    if(pUnkCP == NULL)
        return E_INVALIDARG;
        
    CComPtr<IConnectionPointContainer> pCPC;
    CComPtr<IConnectionPoint> pCP;
    HRESULT hRes = pUnkCP->QueryInterface(__uuidof(IConnectionPointContainer), (void**)&pCPC);
    if (SUCCEEDED(hRes))
        hRes = pCPC->FindConnectionPoint(iid, &pCP);
    if (SUCCEEDED(hRes))
        hRes = pCP->Advise(pUnk, pdw);
    return hRes;
}

ATLINLINE ATLAPI AtlUnadvise(IUnknown* pUnkCP, const IID& iid, DWORD dw)
{
    if(pUnkCP == NULL)
        return E_INVALIDARG;
        
    CComPtr<IConnectionPointContainer> pCPC;
    CComPtr<IConnectionPoint> pCP;
    HRESULT hRes = pUnkCP->QueryInterface(__uuidof(IConnectionPointContainer), (void**)&pCPC);
    if (SUCCEEDED(hRes))
        hRes = pCPC->FindConnectionPoint(iid, &pCP);
    if (SUCCEEDED(hRes))
        hRes = pCP->Unadvise(dw);
    return hRes;
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.