Как получить доступ к объекту webbrowser по этому коду? C ++ - PullRequest
1 голос
/ 18 мая 2010

Я нашел этот пример http://www.mvps.org/user32/webhost.cab, на котором размещен объект Internet Explorer WebBrowser, и он использует этот код для доступа к объекту

void webhostwnd::CreateEmbeddedWebControl(void)
{
  OleCreate(CLSID_WebBrowser,IID_IOleObject,OLERENDER_DRAW,0,&site,&storage,(void**)&mpWebObject);

  mpWebObject->SetHostNames(L"Web Host",L"Web View");

  // I have no idea why this is necessary. remark it out and everything works perfectly.
  OleSetContainedObject(mpWebObject,TRUE);

  RECT rect;
  GetClientRect(hwnd,&rect);

  mpWebObject->DoVerb(OLEIVERB_SHOW,NULL,&site,-1,hwnd,&rect);

  IWebBrowser2* iBrowser;
  mpWebObject->QueryInterface(IID_IWebBrowser2,(void**)&iBrowser);

  VARIANT vURL;
  vURL.vt = VT_BSTR;
  vURL.bstrVal = SysAllocString(L"http://google.com");
  VARIANT ve1, ve2, ve3, ve4;
  ve1.vt = VT_EMPTY;
  ve2.vt = VT_EMPTY;
  ve3.vt = VT_EMPTY;
  ve4.vt = VT_EMPTY;

  iBrowser->put_Left(0);
  iBrowser->put_Top(0);
  iBrowser->put_Width(rect.right);
  iBrowser->put_Height(rect.bottom);

  iBrowser->Navigate2(&vURL, &ve1, &ve2, &ve3, &ve4);

  VariantClear(&vURL);

  iBrowser->Release();
}

У меня нет большого опыта работы с cpp, я хочу знать, как получить доступ к тому же самому объекту ie (например, использовать Navigate2) с помощью кнопки или чего-то подобного. Как мне этого добиться?

1 Ответ

0 голосов
/ 18 мая 2010

mpWebObject является членом класса webhostwnd . Вы можете использовать код,

IWebBrowser2* iBrowser;
  mpWebObject->QueryInterface(IID_IWebBrowser2,(void**)&iBrowser);

в любом месте класса для доступа к интерфейсу браузера (после создания mpWebObject ).

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...