社区
C++ Builder
帖子详情
如何读取.res文件
Metawolf
2004-10-13 04:49:31
请教
如何用程序读取.res文件中的信息
就是读取一个独立的.res文件,不是编译到程序里的
里面是我自己用brcc32编译的图片资源
谢谢
...全文
690
4
打赏
收藏
如何读取.res文件
请教 如何用程序读取.res文件中的信息 就是读取一个独立的.res文件,不是编译到程序里的 里面是我自己用brcc32编译的图片资源 谢谢
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
4 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
ghiewa
2004-10-22
打赏
举报
回复
先编译好res文件
下面就
TResourceStream *rs1 = new TResourceStream((int)HInstance,AnsiString("XSL1"),"EXEFILE");
TResourceStream *rs2 = new TResourceStream((int)HInstance,AnsiString("XSL2"),"EXEFILE");
TResourceStream *rs3 = new TResourceStream((int)HInstance,AnsiString("IMG1"),"EXEFILE");
TResourceStream *rs4 = new TResourceStream((int)HInstance,AnsiString("IMG2"),"EXEFILE");
TResourceStream *rs5 = new TResourceStream((int)HInstance,AnsiString("IMG3"),"EXEFILE");
TResourceStream *rs6 = new TResourceStream((int)HInstance,AnsiString("IMG4"),"EXEFILE");
TResourceStream *rs7 = new TResourceStream((int)HInstance,AnsiString("IMG5"),"EXEFILE");
TResourceStream *rs8 = new TResourceStream((int)HInstance,AnsiString("IMG6"),"EXEFILE");
TResourceStream *rs9 = new TResourceStream((int)HInstance,AnsiString("IMG7"),"EXEFILE");
TResourceStream *rs10 = new TResourceStream((int)HInstance,AnsiString("IMG8"),"EXEFILE");
TResourceStream *rs11 = new TResourceStream((int)HInstance,AnsiString("IMG9"),"EXEFILE");
TResourceStream *rs12 = new TResourceStream((int)HInstance,AnsiString("IMG10"),"EXEFILE");
try
{
rs1->SaveToFile(xsl1);
rs2->SaveToFile(xsl2);
rs3->SaveToFile(img1);
rs4->SaveToFile(img2);
rs5->SaveToFile(img3);
rs6->SaveToFile(img4);
rs7->SaveToFile(img5);
rs8->SaveToFile(img6);
rs9->SaveToFile(img7);
rs10->SaveToFile(img8);
rs11->SaveToFile(img9);
rs12->SaveToFile(img10);
}
__finally
{
delete rs1;
delete rs2;
delete rs3;
delete rs4;
delete rs5;
delete rs6;
delete rs7;
delete rs8;
delete rs9;
delete rs10;
delete rs11;
delete rs12;
}
以前作的 也没有改你参考参考了
FallenAngel
2004-10-13
打赏
举报
回复
其实你用dll来保存,更方便
Metawolf
2004-10-13
打赏
举报
回复
首先谢谢3996906
不过我的意思是想直接读取res文件
因为如果选取二套不同的图标方案
要不编译二个exe文件.要不在exe文件中放入二套图标
所以想把资源文件放到exe文件的外部
3996906
2004-10-13
打赏
举报
回复
转贴一个
怎样使用资源文件
作者: ---------- ,如转载请保证本文档的完整性,并注明出处。
欢迎光临 C++ Builder 研究,http://www.ccrun.com/doc/go.asp?id=157
下面介绍如何将光标和声音作为资源编译到可执行文件中,及其使用方法。
第一步:建立一个rc文件.
例如:zpg.rc,内容如下:
DemHint WAVE D:\Zpg2000\Res\DemHint.wav
PrintType BITMAP D:\Zpg2000\Res\PrintType.bmp
ArrowDown BITMAP D:\Zpg2000\Res\ArrowDown.bmp
ArrowUp BITMAP D:\Zpg2000\Res\ArrowUp.bmp
ZoomIn CURSOR D:\Zpg2000\Res\ZoomIn.cur
ZoomOut CURSOR D:\Zpg2000\Res\ZoomOut.cur
其中第一行为资源名称,第二行为资源类型,第三行为一个存在的文件名.
第二步:编译这个文件.
>BRCC32 zpg.rc
BRCC32.exe 在.../borland/C++ Builder6/bin/目录下,
编译后生成一个资源文件zpg.res
第三步:在程序中声明对资源的使用
在程序中要用到这些资源的单元的#pragma resource "*.dfm"语句后前面添上
#pragma resource "zpg.res"
有时还需添上#pragma package(smart_init)
或在工程主CPP文件中添上
USERES("Zpg.res");
最后怎样调用这个资源呢?看:
调用位图:
Graphics::TBitmap *pBitmap=new Graphics::TBitmap;
pBitmap->LoadFromResourceName((unsigned int)HInstance,"PrintType");
播放声音:
PlaySound("DemHint",HInstance,SND_RESOURCE);
改变光标:
Screen->Cursors[crZoomIn]=LoadCursor(HInstance,"ZoomIn");
//crZoomIn为自定义的光标常量,习惯上为>0的数,而系统定义的一般<0
PaintBox->Cursor=(TCursor)crZoomIn;
Application->ProcessMessages(); //确保光标立即改变
注意:
资源文件只在设计期有用,程序编译后,这些资源就被编译到可执行文件中了,所以程序分发时不必带上资源文件。
C++ Builder
13,874
社区成员
102,696
社区内容
发帖
与我相关
我的任务
C++ Builder
C++ Builder相关内容讨论区
复制链接
扫一扫
分享
社区描述
C++ Builder相关内容讨论区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章