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

請問如何動態的調用 rcs 資源檔

答題得分者是:Stallion
brian_chen
一般會員


發表:14
回覆:20
積分:6
註冊:2007-06-26

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-07-03 16:32:14 IP:59.120.xxx.xxx 訂閱

請問一下

比如說我現在有兩個甚至三個以上的rcs資源檔案
style1.rcs and style2.rcs .....

如果只用一個rcs的話,我是會用
在程式前面加上
#pragma resource "style1.res"
就可以用了

可是如果我想加入一個button,點下去
1、關閉style1.rcs
2、load style2.rcs
就不知道要怎麼做了
編輯記錄
brian_chen 重新編輯於 2007-07-03 20:55:00, 註解 無‧
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-07-04 00:05:42 IP:211.22.xxx.xxx 未訂閱
你寫得很清楚,我看得很模糊,不過我知道Resource不是這樣用的。
搜尋一下TResourceStream, 或者是WINAPI的LoadResource你會有更具體的觀念。
brian_chen
一般會員


發表:14
回覆:20
積分:6
註冊:2007-06-26

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-07-04 09:21:46 IP:220.228.xxx.xxx 訂閱
其實我的目的是想要有換面版的功能
本來是想說,不同的res存放不同面版的各種圖片
要換哪一套時,再去 load 哪個 res 就行了...

結果想的跟做的完全不是那麼一回事

那如果res這種方式不可行的話,想要有替換面版的功能,不知道要用什麼方法去寫
我知道網路上有一些元件可以做到類似替換面版的功能 如某某skin之類的,只要套上*.skn就可以更換面版
不過是公司要用的,所以必需自己開發...但沒有頭緒....

有一個想法,就是如果弄成dll,要用的時候再個別去動態去載入,不知道這個方式可不可行...
編輯記錄
brian_chen 重新編輯於 2007-07-04 09:22:16, 註解 無‧
brian_chen 重新編輯於 2007-07-04 09:23:09, 註解 無‧
Stallion
版主


發表:52
回覆:1600
積分:1995
註冊:2004-09-15

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-07-04 10:08:23 IP:211.22.xxx.xxx 未訂閱
如果把自訂的數據放在RES同時LINK進執行檔覺得太大的話,選擇以DLL動態載入當然也可以!
參考一下這篇。還有要注意資源的釋放,如這篇
編輯記錄
Stallion 重新編輯於 2007-07-04 10:16:49, 註解 無‧
brian_chen
一般會員


發表:14
回覆:20
積分:6
註冊:2007-06-26

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-07-04 21:36:01 IP:59.117.xxx.xxx 訂閱
謝謝你的解答..

後來還是改成用dll的方式來寫...

不過有另外一個問題
怎麼把 dll 裡面的 bmp 圖片檔 load 到 imagelist 裡面去 @@
imagelist 裡面的 getresoruce 好像只針對 res 資源檔
我用 OsX 大大寫的 delphi 改成 bcb 好像怪怪的,圖片出不來.....
只 load 一張圖,查詢 Imagelist->count 正常來說應該是傳回 1 (一張圖在裡面),可是卻傳回大於 1 的數字
用image去show 只show出一小格,無法show出原圖大小...
還是說bcd要用其它的方法才行,不能用addmask

底下為OsX大大寫的:
預先將不同的ImageList的內的圖式, 當成Resource放在 DLL 檔裏,
然後在程式中動態載入, 就可以達到你要效果. 做法:
1.先把所有Icon加進ImageList, 然後將ImageList圖存檔成bmp檔.
2.用Delphi內附的ImageEditor, New 一個 Resource File (*.res),
Ex:test.res
3.將剛剛的bmp圖檔加進來, 並取個名字, Ex: First
(可以放多個bmp檔進來, 取不同名字就可以)
4.New 一個 DLL Project, 然後 Include 剛剛的 res 檔 {$R test.res}.
5.Compile後, 會得到一個只含Icon Resource的 DLL.
6.在Delphi中, 寫Code把外部Resource DLL 載入 ImageList

<textarea class="delphi" rows="10" cols="60" name="code">procedure TForm1.LoadIconFromDLL; var ResBmap: TBitmap; AHnd: THandle; begin ResBmap := TBitmap.Create; try AHnd := LoadLibrary( PChar( ADllName ) ); if AHnd <> 0 then begin ImageList.Clear; ResBmap.LoadFromResourceName( AHnd, 'First' ); ImageList.AddMasked( ResBmap, clFuchsia ); ResBmap.FreeImage; FreeLibrary( AHnd ); end; finally FreeAndNil( ResBmap ); end; end; </textarea>

系統時間:2024-04-20 15:22:09
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!