Windows SDK学习过程中的问题
有个问题我一直搞不懂。
SDK程序的EXE图标是怎么来的,程序中又没有设置EXE文件图标动作。
在普通的一个程序中如果没有ICON资源,则生成的EXE图标是系统默认的;
如果有一个ICON资源,则生成的EXE图标和这个ICON一致;
但是一个程序中如果有几个ICON资源,则生成的EXE图标就好像和这些ICON的ID值有关。
在程序中上面是我的猜想,请各位帮忙解释下,TKS。
问题点数:50、回复次数:12Top
1 楼jronald(深白色)回复于 2005-04-03 17:09:26 得分 0
在我的电脑中显示的图标是资源文件中第一个定义的图标Top
2 楼pangdu(只想做程序)回复于 2005-04-03 17:18:26 得分 0
你手动把那些ICON的ID值大小顺序改变一下不会变吗?
另外ICON的ID是改成字符串形式呢?Top
3 楼jronald(深白色)回复于 2005-04-03 17:20:56 得分 40
我以前试过,没错,书上也是这么说的
手头没这种程序,你可以试试,反正不是用最先定义的图标就是用id最小的图标Top
4 楼jronald(深白色)回复于 2005-04-03 17:21:31 得分 0
用字符串也需要ID的吧Top
5 楼xuzheng318(忧郁王子)回复于 2005-04-03 17:31:34 得分 0
用资源文件自己定义!Top
6 楼pangdu(只想做程序)回复于 2005-04-03 17:42:00 得分 0
我也觉得是用id最小的图标,但是字符串标识符形式的id在RESOURCE.H中并没有#define叙述。
这样的话和数值标识符形式的id大小怎么比呀?
to jronald(深白色) :
哪本书上有提到?Top
7 楼Mackz(在相互)回复于 2005-04-03 17:44:59 得分 10
创建窗口前,一般都要注册一下的吧,以下是标准的代码:
WNDCLASSEX wcex;
wcex.cbSize = sizeof(WNDCLASSEX);
wcex.style = CS_HREDRAW | CS_VREDRAW;
wcex.lpfnWndProc = (WNDPROC)WndProc;
wcex.cbClsExtra = 0;
wcex.cbWndExtra = 0;
wcex.hInstance = hInstance;
wcex.hIcon = LoadIcon(hInstance, (LPCTSTR)IDI_SD); //加载大图标
wcex.hCursor = LoadCursor(NULL, IDC_ARROW);
wcex.hbrBackground = (HBRUSH)(COLOR_WINDOW+1);
wcex.lpszMenuName = (LPCTSTR)IDC_SD;
wcex.lpszClassName = szWindowClass;
wcex.hIconSm = LoadIcon(wcex.hInstance, (LPCTSTR)IDI_SMALL); //加载小图标
RegisterClassEx(&wcex);
Top
8 楼jronald(深白色)回复于 2005-04-03 17:48:08 得分 0
罗云彬的win32汇编书上资源那一章Top
9 楼jronald(深白色)回复于 2005-04-03 17:50:09 得分 0
你试试Top
10 楼pangdu(只想做程序)回复于 2005-04-03 17:53:45 得分 0
to Mackz(在相互) :
wcex.hIcon = LoadIcon(hInstance, (LPCTSTR)IDI_SD); //加载大图标
如果资源文件中只有IDI_SD这么一个图标的话,是没问题:生成的EXE文件图标和这个图标一样。
但是你再向资源文件中添加一个ID值比这小的图标的话,生成的EXE文件图标就变成这个新加的了,不管你有没有用LoadIcon函数把这个图标Load进去,只要程序有这个资源就可以。Top
11 楼pangdu(只想做程序)回复于 2005-04-03 17:55:40 得分 0
to jronald(深白色) :
寒,手头没这本书,我去找找。
Top
12 楼jronald(深白色)回复于 2005-04-03 17:58:36 得分 0
不骗你 P146Top




