讓Webbrowser、CDHtmlDialog中的控制元件顯示為系統主題樣式

鄧學彬發表於2012-02-25

很多程式設計師可能都有這樣的煩惱,開發基於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 的,

相關文章