Здравствуйте 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.
Это понятно.
Заранее благодарен.