在c++builder中使用xp視覺樣式
sdragon 2006-12-28 14:53
使用c++builder的朋友都知道,c++builder是不支援xp視覺樣式的(vision style)。以前我為了讓自己寫的程式看起來漂亮一些,拼命的去自繪控制項(我沒有使用過第三方介面控制項,曾經安裝過,但是總是出問題)。感謝c++builder為我們提供了強大介面的支援,很多vcl控制項都支援自繪,可以表現出完美的視覺效果。但是為了寫這些**,即浪費了時間,又不能使自己專心去開發軟體的核心**,有沒有一種簡單的方式解決這個問題呢?
答案是有的,我參閱了一些文章,用reshacker檢視了n個支援xp視覺樣式的軟體,發現所謂支援xp視覺樣式,只是在程式的資源中新增了乙個xml結構的檔案,在這裡稱為manifest檔案。manifest檔案告訴xp系統,此程式要求xp視覺樣式,於是xp系統就為這個程式使用了系統的主題視覺效果。下面我為大家展示一下manifest檔案的應用。
方式一,外部資源方式:
這種方式可以使任何未支援視覺樣式的win32程式(包括vb、delphi等編譯的可執行檔案)支援視覺樣式。manifest檔案內容如下:
例如,要使c++builder寫的「project1.exe」這個程式支援視覺樣式,將以上**複製到記事本裡,另存為「project1.exe.manifest」到程式的目錄下,格式必須是「utf-8」,然後再開啟應用程式看看!
方式二,內部資源法:
上面的方式挺有效,但總不能使每個編寫的程式都揹著這麼個包袱吧?萬一不小心丟了,特效也就沒了。這就是方式二的好處了。這裡我只講c++builder的方式,原理就是資源檔案的操作,其他語言也一樣。下面的是乙個資源檔案和manifest檔案:
//xpstyle.rc 檔案內容,就一行
1 24 "xpstyle.manifest"
//xpstyle.manifest 檔案內容
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
將上面的檔案儲存好後,將xpstyle.rc加入工程,直接編譯就可以看到效果了,這下大家都爽了吧!
需要說明的是,以上的方法只在winxp以上的系統中才有效。如果你想在win98中也使用視覺樣式,那只能去用第三方控制項,或埋頭自繪去吧。另外,並不是所有的vcl控制項都支援視覺樣式,只有標準的windows控制項才支援視覺樣式。以下列出不支援視覺樣式的部分vcl控制項:
tbitbtn、tspeedbutton
tstringgrid、tdrawgrid
tscrollbox
tvaluelisteditor
ttabcontrol、tpagecontrol 只在style=tstabs時有效。
trichedit 非常可惜啊,不知道richedit是否真的支援視覺樣式,xp的寫字板也是標準的凹凸邊框。
附表:windows 3.1/95/98/me/nt/2000 都不支援視覺效果。
下面列出支援視覺樣式的系統:
windows xp home
windows xp professional
windows xp media center
windows 2003 server
windows longhorn
以及更高階的系統
XP下在Qt Creator中使用OpenCV庫
我直接下了exe,雙擊安裝,改了目錄 d opencv2.2,安裝的時候要選擇 新增環境變數 在建立工程檔案的時候 這裡假設為hello.pro,字尾為pro 向工程中新增以下語句 includepath d opencv2.2 include opencvincludepath d opencv2...
在C Builder中建立使用DLL 摘錄
動態鏈結庫 dll 是windows程式設計常遇到的程式設計方法,下面我就介紹一下在bcb c builder下簡稱bcb 中如何建立使用dll和一些技巧。一 建立 使用bcb file new建立乙個新的dll工程,並儲存好檔案bcb,生成乙個dll的程式框架。1 dllentrypoint函式為...
在中使用SQLDMO
曾幾何時,夥伴們為的公升級傷透了腦筋.往往程式的公升級趕不上資料庫的公升級 版本控制的好,這也許不是什麼問題,但對於很大一部分中國公司來說這是無法避免的 而有些n久以前的資料庫要使用新程式的時候,資料庫的公升級簡直就是無從下手.所以對比資料庫公升級的緊要性就逐漸的凸現出來.對於表和字段的公升級按道理...