DISPID_ONVISIBLE的句柄

时间:2011-08-18 19:13:32

标签: c++ com atl wtl

我尝试隐藏我放到DISPID_NEWWINDOW2的IWebBrowser2。

但没有幸运: - (

导航后,

IWebBrowser2始终可见。这就是我试图处理的原因 DISIP_ONVISIBLE并调用put_Visible(VARIANT_FALSE)来隐藏IWebBrowser2 但是这个事件只有在我自己调用put_Visible()时才会收到......

如何解决我的任务?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

实施NewWindow2NewWindow3并将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;
}