全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:2281
推到 Plurk!
推到 Facebook!

NaturalSkin 三行指令實現換膚介面( 附源碼)

 
enter2004
初階會員


發表:51
回覆:94
積分:34
註冊:2005-04-10

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-10-31 00:48:03 IP:218.174.xxx.xxx 未訂閱
因目前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+上面跑    因為不用安裝任何元件,所以可攜性提高了。    以後會持續推出更新版的模組。     對換膚實現技術有興趣的可以參考我寫的原始碼 有興趣的朋友也可以在下面回復文章,一起參與討論。 ------------------------------------------------------------- 附註: 本模組可以修改,但必須保留原始作者的名字,以及 版權宣告字樣。 若作為商業上使用時必須在您的軟體中註明 使用NaturalSkin模組。 本模組不負任何造成您毀損資料的責任。
------
人生就像泡泡一樣,乘著風被吹著跑,等你發現時已經消失了。
就在快要消失的瞬間,希望能再飛高一點,
但是回神時總是慢了一步。
附加檔案:80638_NSkin01Beta.zip
enter2004
初階會員


發表:51
回覆:94
積分:34
註冊:2005-04-10

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-10-31 01:01:46 IP:218.174.xxx.xxx 未訂閱
我註明一下 在Win98/NT4.0/ME/2000/XP/2003+ 中都會有效果喔。
------
人生就像泡泡一樣,乘著風被吹著跑,等你發現時已經消失了。
就在快要消失的瞬間,希望能再飛高一點,
但是回神時總是慢了一步。
enter2004
初階會員


發表:51
回覆:94
積分:34
註冊:2005-04-10

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-10-31 21:32:49 IP:218.168.xxx.xxx 未訂閱
下一個版本 會實現大部分控件的換膚功能以及所有控件透明化/AlphaBlending的功能。 上面僅是精簡後的原始初稿。 目標是希望:能讓BCB設計出來的軟體能更漂亮,而作者不需花時間在美工方面 ,美工方面都交給NaturalSkin處理。 當然應該都是Free的
------
人生就像泡泡一樣,乘著風被吹著跑,等你發現時已經消失了。
就在快要消失的瞬間,希望能再飛高一點,
但是回神時總是慢了一步。
bugmans
高階會員


發表:95
回覆:322
積分:188
註冊:2003-04-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-11-07 12:21:05 IP:218.166.xxx.xxx 未訂閱
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

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-11-07 12:30:32 IP:218.170.xxx.xxx 未訂閱
Hi,    我自己後來測試發現,會出現access violation    因為我上面的程式碼 沒有處理物件銷毀時的動作    而且我只有在BCB 6.0測試過的    所以上面的程式碼先當作參考    大家可以知道換膚動作是如何進行的    這就是商業軟體他們的實現技術    如果你看得懂也可以自己修改    不用再求之於SUIPack , BussinessSkin...等商業軟體    所以再過幾個禮拜(目前學校期中考...)我會放上來新的程式碼    目前進度報告:    目前已完成TButton,TRadioButton,TCheckBox,TMemo,TEdit,TPanel,TRadioGroup TForm 換膚動作!!    新的程式碼以後會放上來 請大家先別急唷...     感謝樓上這位
------
人生就像泡泡一樣,乘著風被吹著跑,等你發現時已經消失了。
就在快要消失的瞬間,希望能再飛高一點,
但是回神時總是慢了一步。
enter2004
初階會員


發表:51
回覆:94
積分:34
註冊:2005-04-10

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-11-10 22:52:47 IP:218.168.xxx.xxx 未訂閱
新的換膚展示程式( 許多控件還沒完成 )    現在新的版本實現了動態換膚,修正了許多錯誤    (展示程序)    http://hankacm.myweb.hinet.net/NatureSkinDemo.exe    先看看吧!    新的原始碼我還沒放上來,可能要等幾個禮拜期中考完後,我會放上來。    原始未換膚 換膚後
------
人生就像泡泡一樣,乘著風被吹著跑,等你發現時已經消失了。
就在快要消失的瞬間,希望能再飛高一點,
但是回神時總是慢了一步。
kgt
高階會員


發表:17
回覆:308
積分:165
註冊:2002-03-13

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-11-12 11:49:36 IP:61.219.xxx.xxx 未訂閱
不知大大有沒有DELPHI版的?
CoffeeX
中階會員


發表:18
回覆:121
積分:72
註冊:2005-02-18

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-11-28 14:35:44 IP:140.125.xxx.xxx 未訂閱
有一個小問題:說明檔那的
#include "nskin.h" 
應該改為
#include "NSkin.h"  
應當為筆誤,其次小弟有個不才的建議是把skinStart改為SkinStart, 比較符合bcb一般的函數,因為我第一次使用這兩邊都打錯了~~"...
------
=.=???
系統時間:2024-06-29 16:11:30
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!