Re[2]: activeX
От: Vasiliy Vladimirovich Safronov  
Дата: 26.02.02 06:56
Оценка:
Здравствуйте Sashko, Вы писали:


S>В общем тебе нужно добраться вот до такого интерфейса IWebBrowser2. Для контрола, получить его можно через IOleClientSite, который передается контролу либо посредством вызова IOleObject::SetClientSite либо IObjectWithSite::SetSite


S>//@//////////////////////////////////////////////////////////////////////////
S>// CCtrl IObjectWithSiteImpl


S>STDMETHODIMP CCtrl::SetSite(IUnknown* pUnkSite)
S>{
S>    HRESULT hr;

S>    if (FAILED(hr = IObjectWithSiteImpl<CAlterEGoCtrl>::SetSite(pUnkSite)))
S>        return hr;

S>    if (NULL == pUnkSite)
S>    {
S>        ATLASSERT(m_webBrowser);

S>        if (m_webBrowser)
S>        {
S>            DispEventUnadvise(m_webBrowser);
S>            m_webBrowser.Release();
S>        }
S>        return    S_OK;
S>    }

S>    IServiceProvider *pSP = NULL;

S>    if (FAILED(hr = pUnkSite->QueryInterface(IID_IServiceProvider, (void**)&pSP)))
S>        return hr;

S>    hr = pSP->QueryService(IID_IWebBrowserApp, IID_IWebBrowser2, (void**)&m_webBrowser);
S>    pSP->Release();
S>    if (FAILED(hr))                            
S>        return hr;

S>    if (SUCCEEDED(hr = DispEventAdvise(m_webBrowser)))
S>        return S_OK;

S>    m_webBrowser.Release();
S>    return hr;
S>}


Не совсем понял этот механизм.Если не трудно пожалуйста обьясни.
Как сейчас это понимаю:При создании моего обьета(<object и.т.д>) эксплорер запрошивает
через мой интерфейс , интерфейс IOleObject либо IObjectWithSite потом в случае успеха
,т.е если они у меня реализованы,пытается вызвать метод SetSite в единственный параметр
которого передает указатель на свой IOleClientSite ,потом через него мы можем получить
наш IWebBrowser2.

Несовсем понял твой исходный код верней его совсем не понял
(IObjectWithSiteImpl<CAlterEGoCtrl>::SetSite(pUnkSite)-руским языком чайнику можно обьяснить
что это выражение делает,
еще не понял почему нельзя сразу запросить IWebBrowser2? а сначала надо IServiceProvider(??)
а потом на IWebBrowser2 .

,),где про ето можно почитать ,
желательно на нашенском.
Ты не представляешь себе каким я полнейшим чайником себя почувсвовал(помогай плиз выбираться).

S>После того как у тебя есть IWebBrowser2, через IWebBrowser2::get_Document добирается до HTMLDocument'а, и уже через него получаешь доступ к DHTML.

Это понятно.

Заранее благодарен.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.