NaturalSkin 三行指令實現換膚介面( 附源碼) |
|
enter2004
初階會員 ![]() ![]() 發表:51 回覆:94 積分:34 註冊:2005-04-10 發送簡訊給我 |
因目前BCB實現換膚介面都需要藉助付費元件才能實現
而且有些元件在BCB中又安裝不起來
BCB內見的元件又很不好看
所以我特別寫了這個header file
您只需要將nskin.h include 進你的 unit1.cpp , unit2.cpp ,unit3.cpp ...中(記得 nskin.h , nskin.res 需要跟你的檔案放在同一個資料夾底下 )
然後按照以下方式,
在每個unit?.cpp中宣告一個全域變數 NaturalSkin *nSkin;
然後在TForm的建構子中
加上
nSkin=new NaturalSkin(this);
nSkin->skinStart() ;
即可實現Button,RadioButton,CheckBox換膚。
(目前只提供這三個元件換膚!) 注意每個Form的cpp檔宣告的NaturalSkin變數名稱需不同
例如第一個Form你宣告*nSkin
第二個Form你就不能使用*nSkin,你可以使用NaturalSkin *nSkin;。
反正變數名稱需不同即可。 下一步將針對Tntware Unicode元件換膚,以及其他元件。 本程式一開始有許多功能尚未補足,請多包涵。 應該是可以在BCB4,5,6+上面跑 因為不用安裝任何元件,所以可攜性提高了。 以後會持續推出更新版的模組。
------
人生就像泡泡一樣,乘著風被吹著跑,等你發現時已經消失了。 就在快要消失的瞬間,希望能再飛高一點, 但是回神時總是慢了一步。 |
enter2004
初階會員 ![]() ![]() 發表:51 回覆:94 積分:34 註冊:2005-04-10 發送簡訊給我 |
|
enter2004
初階會員 ![]() ![]() 發表:51 回覆:94 積分:34 註冊:2005-04-10 發送簡訊給我 |
|
bugmans
高階會員 ![]() ![]() ![]() ![]() 發表:95 回覆:322 積分:188 註冊:2003-04-12 發送簡訊給我 |
enter2004你好,我在試用時發現了問題
在NSkin.h中
Classes::TWndMethod orgWindowProc;要該正為Controls::TWndMethod orgWindowProc;
相同的__fastcall void ReplaceWProc(Classes::TWndMethod &oldProc)也要改成__fastcall void ReplaceWProc(Controls::TWndMethod &oldProc)這樣才能順利執行
測試環境BCB5,win2000
|
enter2004
初階會員 ![]() ![]() 發表:51 回覆:94 積分:34 註冊:2005-04-10 發送簡訊給我 |
Hi, 我自己後來測試發現,會出現access violation 因為我上面的程式碼 沒有處理物件銷毀時的動作 而且我只有在BCB 6.0測試過的 所以上面的程式碼先當作參考 大家可以知道換膚動作是如何進行的 這就是商業軟體他們的實現技術 如果你看得懂也可以自己修改 不用再求之於SUIPack , BussinessSkin...等商業軟體 所以再過幾個禮拜(目前學校期中考...)我會放上來新的程式碼 目前進度報告: 目前已完成TButton,TRadioButton,TCheckBox,TMemo,TEdit,TPanel,TRadioGroup
TForm
換膚動作!! 新的程式碼以後會放上來 請大家先別急唷...
------
人生就像泡泡一樣,乘著風被吹著跑,等你發現時已經消失了。 就在快要消失的瞬間,希望能再飛高一點, 但是回神時總是慢了一步。 |
enter2004
初階會員 ![]() ![]() 發表:51 回覆:94 積分:34 註冊:2005-04-10 發送簡訊給我 |
|
kgt
高階會員 ![]() ![]() ![]() ![]() 發表:17 回覆:308 積分:165 註冊:2002-03-13 發送簡訊給我 |
|
CoffeeX
中階會員 ![]() ![]() ![]() 發表:18 回覆:121 積分:72 註冊:2005-02-18 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |