程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> C語言 >> VC >> 關於VC++ >> 讓VC程序使用WindowXP的桌面主題風格

讓VC程序使用WindowXP的桌面主題風格

編輯:關於VC++

介紹

介紹怎樣在讓普通的程序可以支持WindowsXP的桌面主題風格.

最近寫了一些簡單的小應用,可是跑在我自己的XP系統上感覺很土,因為界面都是WIN95風格的,感覺格格不入。我使用了一些很COOL的XP桌面主題風格。很多程序像WINRAR都會隨著系統的主題風格改變而改變界面風格。我想MS一定提供了某種機制讓應用使用系統的主題風格。查了一下MSDN,原來很容易就可以實現。

WINDOWS把這個叫做“Visual Styles”虛擬風格。我們所用的普通控件都位於系統的ComCtl32.dll當中,這個DLL從版本6開始支持虛擬風格。版本6在XP和2003中是缺省附帶的。而且是同時附帶了這個DLL的版本5和版本6,以兼容使用老版本的應用。而VS默認編譯出來的應用是使用版本5的。這就是為什麼直接編譯出來的應用在XP下看起來“土土”的。

我們要做的事情就是讓應用在ComCtl32.dll版本6有效的情況下,使用版本6,否則使用版本5,以兼容WINXP以前的系統。要達到這個目的很簡單。

打開工程的rc文件,最好是用普通的編譯器打開,像notepad之類的。在該文件的最後面,在

#endif

行前面加上一行

CREATEPROCESS_MANIFEST_RESOURCE_ID RT_MANIFEST "./res/YourAppName.exe.manifest"

注意將YourAppName改為你的工程名。這個manifest文件可以在工程的res目錄下找到。再重新編譯你的應用就可以了。

以上是以VS2003 version7.1環境為例。VC6無法自動生成這個manifest文件。如果你使用的是VC6可以自己寫一個manifest文件,這是一個XML文件,內容很簡單可以在MSDN中查到,或在用VS2003或VS2005生成的工程上找到這個文件,直接拷貝過來,把相應的應用名和版本號改一下就可以直接用了。另外,MSDN中要求調用InitCommonControls()進行初始化。如果你使用的是WTL,框架已經調用了。MFC我沒有試過(很久沒用MFC了,自從用了WTL之後),照理框架也應該調用的。如果照上述步驟操作後沒有反應,你可以自己在CYournameApp類的InitInstance()方法前加上一行InitCommonControls();

注意Yourname是你的工程名,這個函數是普通MFC應用的入口。

另外值得說一下的是,支持虛擬風格的系統(如XP和WIN2003),提供了一個UxTheme.lib庫,專門負責控件的外觀渲染,也可以查詢當前系統選用的主題的諸多細節,如字體大小,顏色,背景等。如果你想自己寫一個控件,同時又要支持虛擬風格,那麼這個庫就是你要研究的對象了。

上面所述的內容,都可以在MSDN中找到。在MSDN中搜索“Visual Styles”主題即可。需要了解更多細節的朋友可以自己看看相應的內容。

這就是我寫的那個小程序,界面很COOL吧。其實我只是選用了一個很COOL的XP主題而已。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved