一个初学者非常想知道vc中的资源文件与resource.h之间的关系。
.rc文件中是好像是一种用类pascle的语言写成的描述文字。但是呢,比如一个菜单资源IDR_MAINFRAME,它在resource.h中却用#define IDR_MAINFRAME 100这样的话定义了一翻,我想知道这是为什么。??二者到底有什么必然的联系,既然.rc是描述资源的地方,为什么还要在resource.h中定义呢??
还有一个问题就是,如下句:LoadIcon(hinst,IDB_XXX),这样的句子,显然,IDB_XXX应是rc中描述的一个资源,但事实上,我从resource.h中看到了定义了常量的IDB_XXX,但是IDB_XXX在.rc编辑器中却找不到。为什么?难道不是所有的在resource中定义的资源不全都在.rc中描述吗?二者的关系又如何?
最后一个问题:书上说LoadIcon()这个函数的第二个参数,可以是定义的ID,也可是个字符串,比如"houjunjie"等。我不太明白,如果与成一个字符串,它怎么可以代表一个资源呢??
问题点数:0、回复次数:5Top
1 楼peon(加菲-加菲 一只特立独行的猫)回复于 2003-08-04 00:59:55 得分 0
个人猜想:
这个是声明和定义的关系
就和 .h .cpp 的关系是类似的Top
2 楼snaill(com.chinaos.snaill)回复于 2003-08-04 02:09:35 得分 0
同意楼上的
注意,#define是宏定义,不是常量
其实,资源是通过资源的类型名和资源名来存放的,祥见LoadResource和FindResource
而ID号只是一种方便使用的机制,一般是通过MAKEINTRESOURCE来转换成字符串的
对于你说的IDB_XXX在rc文件中不存在,正常情况下是不可能的,一般IDB表示位图文件,rc文件中会描述该文件的文件名。但有一种情况,就是这个资源你定义又删除,VC会删除rc文件中的相应定义,但对于resource.h中的宏定义会保留,其他类型的资源也是如此
对于resource.h和.rc文件的关系,如楼上所说,resource.h并不是必需的,但在VC中他是application framework的一部分Top
3 楼sdcer(独钓雪)回复于 2003-08-04 08:33:50 得分 0
不是不可能吧,正如问题所述,LoadIcon()中第二个参数在资源.rc的可视化环境中就是找不到,顺利请问,如何把.rc用记事本形事打开,我在工程所在文件夹下找不到.rc文件啊。Top
4 楼DeautyFan(可可魔仙)回复于 2003-08-04 08:52:42 得分 0
找不到没有关系,你在workspace的resourceview中的Icon中会有一个ID为这个名称的ICON的,.rc文件用记事本形事打开直接右键点击文件,选择记事本打开就可以了,建议用记事本修改前最好倍份程序或至少倍份.rc文件Top
5 楼sdcer(独钓雪)回复于 2003-08-04 09:00:12 得分 0
LoadIcon(wcex.hInstance, (LPCTSTR)IDI_SMALL)
其中第二个参数确实在.rc中找不到啊。不过,IDE_SMALL倒是在resource.h中定义了。为什么呀。Top




