дескриптор DISPID_ONVISIBLE - PullRequest
       20

дескриптор DISPID_ONVISIBLE

0 голосов
/ 18 августа 2011

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

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

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

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

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

1 Ответ

0 голосов
/ 26 декабря 2011

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

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;
}
...