Make the webbrowser control styled the same way as the hosting application

User wtx_sonery wants to know whether it is possible to style the webbrowser control with the rest of the application. The answer is yes, you can implement IDocHostUIHandler’s GetHostInfo method and return DOCHOSTUIFLAG_THEME in the host flags.

IDocHostUIHandler is already implemented in MFC and ATL. For MFC there are CHtmlControlSite and CBrowserControlSite but you should be overriding the GetHostInfo function in CHTMLView and CDHTMLDialog. In ATL the template definition is in Atliface.h but you need to derive from IDocHostUIHandlerDispatch by yourself.

Implementing IDocHostUIHandler Windows Forms gets a little tricky. Windows Forms already implemented it on its WebBrowserSite class but you can’t extend it. Following the .Net Framework Class Library Security Guideline the Windows Forms version of the IDocHostUIHandler interface is internal to the class library. If you derive from WebBrowserSite and implement your own version of IDocHostUIHandler, you still get Windows Forms’s implementation of IDocHostUIHandler when you do QueryInterface on the browser site. That means you need to get ride of the Windows Forms wrapper of the webbrowser control and provide your own hosting implementation.

WPF/Silverlight users, you are out of luck. The stock version of the webbrowser control does not even provide a way to customize the host site. The best thing you can do is to see if Windows Forms interop is available to the platform and if so, embed a csexwb Windows Forms control. There are some unsolved problems in the csexwb discussion area, however.

There are other switches you can tweak the browser control’s behavior. However there is only one bit available in the enum for future flags. Maybe that’s why IE introduces feature control in IE6 for Windows XP SP2 where features are based on enum – you get a 4GB range for new features!

About Sheng Jiang 蒋晟

Microsoft MVP in Visual C , 2004- Forum moderator of the Visual C and .Net forums on CSDN Forum moderator of Chinese forums on Microsoft's MSDN forums
This entry was posted in Active Template Library, enmsdn, Microsoft, Microsoft Foundation Class Library, Visual C++ and tagged , , , , , , , , , , , , . Bookmark the permalink.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s