我如何在bcb中使用資源檔(詳細內文) |
尚未結案
|
bcb902146
一般會員 發表:67 回覆:33 積分:22 註冊:2002-07-20 發送簡訊給我 |
|||||
RaynorPao
版主 發表:139 回覆:3622 積分:7025 註冊:2002-08-12 發送簡訊給我 |
引言: 是這樣的啦 我平常都用api讀取外部音樂檔 現在我想把音樂檔加到˙資源檔裡 我要怎麼弄呢 (就是沒有外部音樂檔,就像音樂檔包在執行檔中了) 不知道我講的詳細不詳細 劉維翔(1)用 vc 產生一個 dll (2)在 dll 中產生一個 *.rc (3)在 rc 中產生一個自訂的型態(例如「data」) (4)把你要的音樂檔 import 到 dll 裡面 (5)由程式碼中讀取你要的音樂資料
------
-- 若您已經得到滿意的答覆,請適時結案!! -- -- 欲知前世因,今生受者是;欲知來世果,今生做者是 -- -- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 -- |
||||
hcw
一般會員 發表:5 回覆:11 積分:3 註冊:2002-09-18 發送簡訊給我 |
引言:一、 首先編輯一資源文字檔,格式如下︰ 程式中所使用的名稱 格式 路徑 A1 WAV wav1.Wav B1 CURSOR cursor1.cur C1 ICON icone1.ico D1 BITMAP title.bmp E1 EXEFILE pkunzip.exe 再儲存成 .rc檔(如resouce.rc) 二、 再BCB中利用精靈產生一個DLL,再加入以下之程式碼︰ USERC("resource.rc"); extern "C" __declspec(dllexport) void* __stdcall Init_Resource(); void* __stdcall Init_Resource() { return HInstance; } 選擇Project | Build All Projects 將會產生 xxx.DLL 和xxx.Lib 二個檔。 三、 加入主程式方式如下︰ Project | project add->加入xxx.lib 並copy xxx.dll到程式相同的目錄下 宣告︰ extern "C" __declspec(dllimport) void* __stdcall Init_Resource(); //取得DLL資源檔中的HInstance HInstance=Init_Resource(); Image1->Picture->Icon->Handle=::LoadIcon(HInstance,"C1") ; Image1->Picture->Bitmap->Handle=::LoadBitmap(HInstance,"D1"); Screen->Cursors[100]=::LoadCursor(HInstance,"B1"); |
||||
dllee
站務副站長 發表:321 回覆:2519 積分:1711 註冊:2002-04-15 發送簡訊給我 |
如果要放在同一個專案中,不需另外加 DLL,可以參考:
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=22021 外加的 DLL 是讓你的程式可以給別人改時才需要作的,如果 Release 時,不需要給別人改,則可以放在主專案中即可。 想請問 hcw ,不知道您 rc 中的
A1 WAV wav1.Wav
E1 EXEFILE pkunzip.exe
要如何讀出呢? 沒空更新的網頁...
------
http://www.ViewMove.com |
||||
hcw
一般會員 發表:5 回覆:11 積分:3 註冊:2002-09-18 發送簡訊給我 |
dllee 你好︰ 讀取wav及exe方式如下︰ //wav檔載入方式
char *wav_handle ; HRSRC h = FindResource(HInstance,"A1","WAV");
HGLOBAL h1 = LoadResource(HInstance, h);
wav_handle = (char *)LockResource(h1);
sndPlaySound(wav_handle, SND_MEMORY |SND_SYNC); //執行檔載入方式(在此以解壓縮為例) ShellExecute(HInstance,"open"," E1 ","d:\\a.zip d:\\ ", "\tmppath", SW_HIDE ) ;
Application->MessageBox("解壓縮完成", "OK", IDOK ) ;
|
||||
dllee
站務副站長 發表:321 回覆:2519 積分:1711 註冊:2002-04-15 發送簡訊給我 |
引言: dllee 你好︰ 讀取wav及exe方式如下︰ //wav檔載入方式 char *wav_handle ; HRSRC h = FindResource(HInstance,"A1","WAV"); HGLOBAL h1 = LoadResource(HInstance, h); wav_handle = (char *)LockResource(h1); sndPlaySound(wav_handle, SND_MEMORY |SND_SYNC); //執行檔載入方式(在此以解壓縮為例) ShellExecute(HInstance,"open"," E1 ","d:\\a.zip d:\\ ", "\tmppath", SW_HIDE ) ; Application->MessageBox("解壓縮完成", "OK", IDOK ) ;謝謝! 是否在 RC 檔中,只有 CURSOR,ICON,BITMAP 是標準的 KeyWord ,其他的 WAV, EXEFILE 都是可以按自己的喜好來取名呢? 沒空更新的網頁...
------
http://www.ViewMove.com |
||||
hcw
一般會員 發表:5 回覆:11 積分:3 註冊:2002-09-18 發送簡訊給我 |
|||||
bosswang919
一般會員 發表:5 回覆:4 積分:1 註冊:2004-09-08 發送簡訊給我 |
引言: 一、 首先編輯一資源文字檔,格式如下︰ 程式中所使用的名稱 格式 路徑 A1 WAV wav1.Wav B1 CURSOR cursor1.cur C1 ICON icone1.ico D1 BITMAP title.bmp E1 EXEFILE pkunzip.exe 再儲存成 .rc檔(如resouce.rc) 二、 再BCB中利用精靈產生一個DLL,再加入以下之程式碼︰ USERC("resource.rc"); extern "C" __declspec(dllexport) void* __stdcall Init_Resource(); void* __stdcall Init_Resource() { return HInstance; } 選擇Project | Build All Projects 將會產生 xxx.DLL 和xxx.Lib 二個檔。 三、 加入主程式方式如下︰ Project | project add->加入xxx.lib 並copy xxx.dll到程式相同的目錄下 宣告︰ extern "C" __declspec(dllimport) void* __stdcall Init_Resource(); //取得DLL資源檔中的HInstance HInstance=Init_Resource(); Image1->Picture->Icon->Handle=::LoadIcon(HInstance,"C1") ; Image1->Picture->Bitmap->Handle=::LoadBitmap(HInstance,"D1"); Screen->Cursors[100]=::LoadCursor(HInstance,"B1");大家好,小弟有點問題請教 在一、中提到的路徑中,在包完之後,這個路徑還要有檔案存在嗎,還是只要包完後的 dll lib 即可 如果是 BITMAP 的話,那圖檔只能是256色嗎,可以更高嗎 小弟包完 dll lib 之後 這兩個檔好像檔案大小不大,看起來好像圖檔沒包進去,不知是哪裡沒注意 還有就是如果正常成功的話,是不是只要更換 dll 裡的圖檔編號,然後置換 dll,就可以達成換掉程式裡所有的圖 感謝賜教~~ |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |