在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
一. 现在的Windows应用程序几乎都使用图标、图片、光标、声音等,我们称它们为资源(Resource)。最简单的使用资源的办法是把这些资源的源文件打入软件包,以方便程序需要的时候调用。资源是程序的一部分,程序要正常运行就离不了资源文件。但是它是不可执行代码。 二、创建资源文件: 1.首先创建一个.Rc的纯文本文件。格式如下:
例中资源文件名可以不加引号。假设我们把上述三行保存成Sample.RC文件。 2。使用Borland资源编译器(BRCC32.EXE)转化.Rc文件成.Res文件。 三、引用资源文件 四、调用资源文件 procedure TfrMain.btnCanvasPic(Sender: TObject);begin Image1.Picture.Bitmap.Handle :=LoadBitmap(hInstance,'资源标识符');end;注:如果位图没有装载成功,程序仍旧执行,但是Image将不再显示图片。可以根据LoadBitmap 函数的返回值判断是否装载成功,如果装载成功返回值是非0,如果装载失败返回值是0。 另外一个存取显示位图的方法如下: procedure TfrMain.btnLoadPicClick(Sender: TObject);begin Image1.Picture.Bitmap.LoadFromResourceName(hInstance,'资源标识符');end; 2。存取资源文件中的光标 procedure TfrMain.btnUseCursorClick(Sender: TObject);begin Screen.Cursors[1] :=LoadCursor(hInstance,'资源标识符'); Image1.Cursor :=1;end; 3。存取资源文件中的图标 procedure TfrMain.btnUseCursorClick(Sender: TObject);begin Screen.Cursors[1] :=LoadCursor(hInstance,'资源标识符'); Image1.Cursor :=1;end; 4。存取资源文件中的AVI procedure TfrMain.btnUseCursorClick(Sender: TObject);begin Screen.Cursors[1] :=LoadCursor(hInstance,'资源标识符'); Image1.Cursor :=1;end;实践中的一点总结:并不是所有的AVI资源都可以用TAnimate组件来播放,编定程序时要测试。遇到不能用TAnimate组件来播放的AVI资源,则可以把它从资源文件里分离出来,再使用相应的播放组件比如TMediaPlayer来播放。使用完再把分离出来的临时文件删除掉。可以参考后面 “7。”的说明。 5。存取资源文件中的JPEG procedure TfrMain.btnUseCursorClick(Sender: TObject);begin Screen.Cursors[1] :=LoadCursor(hInstance,'资源标识符'); Image1.Cursor :=1;end; 6。存取资源文件中的Wave procedure TfrMain.btnUseCursorClick(Sender: TObject);begin Screen.Cursors[1] :=LoadCursor(hInstance,'资源标识符'); Image1.Cursor :=1;end;实践中的一点结论:PlaySound()的参数Snd_ASync表示异步播放方式,Snd_Sync表示同步播放方式。(1)当采用异步方式的时候,WAV资源可以作为背景音乐来应用;但是当有连续多次异步调用的时候,则可能会丢弃最后一次调用之前的所有播放,用户得到的效果只是最后一次调用的声音。(2)当采用同步方式的时候,WAV资源会独占资源,导致WAV文件未播放完之前用户无法对应用程序进行任何操作,直至它的调用结束。所以如果有大的同步WAV资源时,会造成应用程序界面的停滞。但是这种方式却可以连续地一个不漏地执行多次调用。 7。其他资源的调用: procedure TfrMain.btnUseCursorClick(Sender: TObject);begin Screen.Cursors[1] :=LoadCursor(hInstance,'资源标识符'); Image1.Cursor :=1;end;程序退出的时候删除: procedure TfrMain.btnUseCursorClick(Sender: TObject);begin Screen.Cursors[1] :=LoadCursor(hInstance,'资源标识符'); Image1.Cursor :=1;end; 一个利用res将文件还原的事例 {$R MyMusic.RES} //将应用程序中包含的资源(文件)重新还原 procedure MusicResToFile(const ResName, ResType,FileName: string); var Res: TResourceStream; begin Res := TResourceStream.Create(HInstance,ResName, PChar(ResType)); Res.SaveToFile(FileName); //将资源保存为文件,即还原文件 //你还可以进行其它的流操作,在内存中实现对资源利用而不必另存为文件 。。。 Res.Free; end;调用: MusicResToFile('SRC2', 'FILE2', 'TheSecondMusic.MP3'); 五、结束语 |
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论