在C Builder中使用XP視覺樣式

2021-04-14 13:05:50 字數 1614 閱讀 9826

在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久以前的資料庫要使用新程式的時候,資料庫的公升級簡直就是無從下手.所以對比資料庫公升級的緊要性就逐漸的凸現出來.對於表和字段的公升級按道理...