比如我想加载一个ICON,使用如下函数(32bit程序):
LoadIcon(HINSTANCE hInstance,LPCTSTR lpIconName);
【1】若我的X.RC文件是这样的:
ICONX ICON “D:\1.ico”
在主函数里加载ico,可以这样:LoadIcon(hIns,"ICONX");
【2】若我的X.RC文件是这样的:
123 ICON “D:\1.ico”
在主函数里加载ico,可以这样:LoadIcon(hIns,MAKEINTRESOURCE(123));
而MAKEINTRESOURCE就是把123低16位的值(123),强制转换为一个字符串地址
如果是使用【2】的方法:
问题1,【2】的RC文件里,我只给ICON一个ID值,没给它起名字,LoadIcon时的第二个参数是怎么获得的呢?
问题2,是不是意味着,在此进程的地址空间里,地址为123的地方存着ICON的名字?换句话说,RC文件每个资源前面的ID,是不是人为的指定某个资源,让它存储在所属进程地址空间里固定的位置(地址为资源ID值)?
问题3,进程(32bit)地址空间的 0X0000,0000~0X0000,FFFF 是专门放资源的么?每个地址有多大的地方(每个地址有多少字字节)?
资源ID/资源名和windows没关系,是vc++的resource.h里面定义的常量和对应的名字。