BUG: WebBrowser Control Destroyed When Hidden (182111)



The information in this article applies to:

  • Microsoft Internet Explorer (Programming) 4.0
  • Microsoft Internet Explorer (Programming) 4.01
  • Microsoft Internet Explorer (Programming) 5
  • Microsoft Internet Explorer (Programming) 5.01
  • Microsoft Internet Explorer (Programming) 5.01 SP1
  • Microsoft Internet Explorer (Programming) 5.5
  • The Microsoft Foundation Classes (MFC)
  • Microsoft Internet Client SDK 4.0
  • Microsoft Internet Client SDK 4.01

This article was previously published under Q182111

SYMPTOMS

The Microsoft WebBrowser control is used in a Microsoft Foundation Class (MFC) application and, following the dynamic creation of the control or call to ShowWindow(SW_HIDE), results in the control's methods not functioning or a debug assertion in Winocc.cpp.

CAUSE

If the WebBrowser control is created dynamically without specifying the WS_VISIBLE window style, or if the control's ShowWindow(SW_HIDE) method is called, this results in a call to the control's IOleControl::DoVerb() method with the OLEVERB_HIDE verb. This in turn causes the instance of Internet Explorer to be destroyed, preventing further access to the control's methods, or if built with a debug configuration, the application asserts when CWnd methods are called for the control.

RESOLUTION

Specify the WS_VISIBLE window style when dynamically creating a WebBrowser control and do not call the control's ShowWindow(SW_HIDE) method.

STATUS

Microsoft has confirmed that this is a bug in the Microsoft products that are listed at the beginning of this article.

MORE INFORMATION

If you need to hide the WebBrowser control, call the Windows SDK ShowWindow() API directly.

Use the following code to hide the control:
::ShowWindow( m_Control.GetSafeHwnd(), SW_HIDE );
				
Use the following code to show the control:
::ShowWindow( m_Control.GetSafeHwnd(), SW_SHOW );
				

Modification Type:MajorLast Reviewed:5/12/2003
Keywords:kbBug kbpending KB182111