Дескриптор DISPID_ONVISIBLE

Я пытаюсь скрыть IWebBrowser2, который я помещаю в DISPID_NEWWINDOW2.

Но не повезло:-(

IWebBrowser2 всегда виден после навигации. Вот почему я пытаюсь обработать DISIP_ONVISIBLE и вызвать put_Visible(VARIANT_FALSE), чтобы скрыть IWebBrowser2, но это событие я получаю только тогда, когда сам вызываю put_Visible()...

Как решить мою задачу?

Спасибо за любую помощь.

1 ответ

Воплощать в жизнь NewWindow2 или же NewWindow3 и установить ppDisp к новому экземпляру IWebBrowser2,
Чтобы убедиться, что этот новый экземпляр не виден, используйте put_Visible или вызовите ShowWindow(SW_HIDE) на контейнере элемента управления.
Вы также можете установить *Cancel = VARIANT_TRUE вообще отключить всплывающее окно.
Внедрение NewWindow3 даст вам адрес назначения.

STDMETHODIMP CMyBrowser::OnNewWindow3(IDispatch **ppDisp, 
                                      VARIANT_BOOL *Cancel, 
                                      DWORD dwFlags, 
                                      BSTR bstrUrlContext, 
                                      BSTR bstrUrl)
{
  // spWebBrowser = create a newly instance of IWebBrowser2
  ppDisp = (IDispatch*)spWebBrowser;
  return S_OK;
}
Другие вопросы по тегам