资源文件在 Windows 下都是通用的,扩展名为 .res。
建立资源描述文件,扩展名为 .rc,格式如下:
| stringtable //定义字符串 { 8001,"这是资源文件的第8001号文字" 8002,"这是资源文件的第8001号文字" 8003,"这是第一行\x0d\x0a\这是第二行\x0d\x0a\这是第三行" } |
| mycur cursor 光标.ani mypic Bitmap 位图.bmp mywav WAVE 声音.wav myAVI AVI 无声动画.avi myIco ICON 图标.ico |
| #define ConstVar 1 // 定义常量 |
| 标识 | 意义 | |
|---|---|---|
| stringtable | 文字 | |
| bitmap | BMP 图象 | |
| cursor | 光标 | |
| icon | 图标 | |
| wave | 声音 | |
| jpeg | JPG 图象 |
| Brcc32.exe 资源.rc |
| {$R 资源文件.res} |
LoadResource
| 标识 | 使用方法 |
|---|---|
| stringtable | LoadStr(strID) : string |
| bitmap | Image1.picture.Bitmap.Handle := LoadBitmap(Hinstance, 'mybmp'); Picture.Bitmap.LoadFromResourceName(HInstance, '位图.bmp'); var |
| cursor | screen.cursor[35] := LoadCursor(Hinstance, 'mycur'); Panel1.cursor := 35; |
| icon | Application.Icon.Handle := LoadIcon(HInstance, 'MyIco'); |
| wave | Playsound(pchar(''mywav''),hinstance,sndsync or snd_resource); |
| avi | animater1.resname:='myAVI'; Animate1.Active := True; |
建立如下的 .dpr 工程,编译生成 DLL 文件。
| 生成资源的工程代码 | library Icon; {$R Icon.RES} begin end. |
| 使用外部资源 | Hinst:=Loadlibrary('Icon.dll'); Hicon:=Loadicon(Hinst,'myico'); FreeLibrary(Hinst); |
| 项目 | 内容 |
|---|---|
| .RC | bb jpeg img.jpg |
| 资源文件 | {$R 'JPEG.res'} |
| 控件 | Image1: TImage; BitBtn1: TBitBtn; |
| 代码1 | procedure TForm1.BitBtn1Click(Sender: TObject); var stream : TStream; MyJPG : TJpegImage; begin stream:=tresourcestream.Create(hinstance,'bb','jpeg'); Try MyJpg:=TJpegImage.Create; Try MyJpg.LoadfromStream(Stream); Image1.Picture.Assign(MyJpg); Finally MyJpg.Free; end; Finally Stream.Free; end; end; |
| 代码2 | var jpg: TJPEGImage; resStream: TResourceStream; begin jpg := TJPEGImage.Create; resStream := TResourceStream.Create(HInstance, 'testJpg', 'jpgtype'); jpg.LoadFromStream(resStream); Image1.Picture.Assign(jpg); jpg.Free; resStream.Free; end; |