首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> VC 教學

C++ Builder 資源檔 (.rc) 完整應用指南:圖示、游標、聲音、動畫、外部程式

     編輯:VC 教學

資源定義檔 (.rc) 格式

純文字檔,每行定義一個資源:

資源識別碼  資源類型  檔案路徑
S1          WAV       wav1.wav
C1          CURSOR    cursor1.cur
C2          CURSOR    cursor2.cur
I1          ICON      icon1.ico
I2          ICON      icon2.ico
I3          ICON      icon3.ico
UNZIP       EXEFILE   pkunzip.exe

常用類型:BITMAP, ICON, CURSOR, WAV, AVI, EXEFILE (自訂類型,需自行解析)、RT_RCDATA (原始資料)。

編譯與連結

  • 直接將 .rc 加入專案 (Project → Add to Project),IDE 自動調用 brcc32.exe 編譯為 .res 並連結。
  • 或手動命令列:brcc32 src1.rc src1.res,再用 #pragma resource "src1.res" 連結。

運行時載入與使用

1. 圖示

Application->Icon->Handle = LoadIcon(HInstance, "I1"); // 或 MAKEINTRESOURCE(I1)
Form1->Icon->Handle = LoadIcon(HInstance, "I2");

2. 游標

Screen->Cursors[crMyCursor] = LoadCursor(HInstance, "C1");
Button1->Cursor = crMyCursor;

3. 聲音 (WAV)

// 同步播放
sndPlaySound(MAKEINTRESOURCE("S1"), SND_RESOURCE | SND_SYNC);
// 非同步
sndPlaySound(MAKEINTRESOURCE("S1"), SND_RESOURCE | SND_ASYNC);

4. 動畫 (AVI)

TAnimate *ani = new TAnimate(this);
ani->Parent = this;
ani->ResHandle = HInstance;
ani->ResName = "MY_AVI";
ani->Open();
ani->Play(0, -1, -1); // 循環播放

5. 外部程式資源 (EXEFILE 類型)

將獨立 EXE (如解壓縮工具) 嵌入自家 EXE,運行時釋放到暫存目錄再執行:

HRSRC hRes = FindResource(HInstance, "UNZIP", "EXEFILE");
HGLOBAL hGlob = LoadResource(HInstance, hRes);
void *pData = LockResource(hGlob);
DWORD size = SizeofResource(HInstance, hRes);
// 寫入暫存檔
AnsiString tmp = GetTempPath() + "unzip.exe";
TFileStream *fs = new TFileStream(tmp, fmCreate);
fs->Write(pData, size);
delete fs;
// 執行
WinExec(tmp.c_str(), SW_SHOW);

優點

  • 單一 EXE 部署,無外部資源檔遺失風險。
  • 資源編譯進二進位,難被輕易竄改/替換。
  • 支援多種媒體類型,涵蓋圖形、聲音、動畫、二進位資料。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved