让Webbrowser、CDHtmlDialog中的控件显示为系统主题样式

很多程序员可能都有这样的烦恼,开发基于IE内核的浏览器在WinXP以及Vista、Windows7等系统下浏览某些页面的时候缺没有系统主题的样式,按钮、文本框等还是Windows9x时代那种老的样式。在此笔者总结出几种方法解决,大家可以参考一下。

方法1:在HTML文件里加上如下代码

<META HTTP-EQUIV="MSThemeCompatible" CONTENT="Yes"> 

此方法对于不是自己设计的网页不实用.

方法2:

LoadLibrary (“explorer.exe”);

此方法在网络上广为流传,但笔者不推荐这样做.

 

方法3:在以CDHtmlDialog 类为基类的头文件中加入如下代码(推荐)

class CWebBrowserThemeDlg : public CDHtmlDialog
 { 
    STDMETHOD(GetHostInfo)(DOCHOSTUIINFO *pInfo){pInfo->dwFlags |= DOCHOSTUIFLAG_THEME; return S_OK;}; 
};
 

WebBrowser 控件有一个IDocHostUIHandler 回调接口,这个接口用于WebBrowser 显示内容时,向WebBrowser 调用者查询界面设置的配置信息。其中有一个叫做GetHostInfo 的回调函数,通过设置DOCHOSTUIFLAG_THEME 就可以设定WebBrowser 显示的控件是具有Theme 的,

你可能感兴趣的:(html,windows,浏览器,网络,Class,WebBrowser)