LoadIcon的使用
函数原型:
HICON WINAPI LoadIcon ( HINSTANCE hInstance, LPCTSTR lpIconName );
参数
1.hInstance类型:HINSTANCE
图标资源所在模块的实例句柄。如果是标准图标,此参数必须为NULL。
2.lpIconName类型:LPCTSTR
图标资源名或资源标识符,资源标识符由16位组成,在低16位,高16位为0。宏 MAKEINTRESOURCE 可以将资源标识符强制转换成参数的资源名类型。如果使用预定义的图标,需要将hInstance参数设置成NULL,并且lpIconName值必须是以下之一:
宏名 | 宏值 | 意义 |
---|---|---|
IDI_APPLICATION | MAKEINTRESOURCE(32512) | 默认应用程序图标 |
IDI_ASTERISK | MAKEINTRESOURCE(32516) | 星状图标,同 IDI_INFORMATION |
IDI_ERROR | MAKEINTRESOURCE(32513) | 手型图标 |
IDI_EXCLAMATION | MAKEINTRESOURCE(32515) | 感叹号状图标,同 IDI_WARNING |
IDI_HAND | MAKEINTRESOURCE(32513) | 手型图标,同 IDI_ERROR |
IDI_INFORMATION | MAKEINTRESOURCE(32516) | 星状图标 |
IDI_QUESTION | MAKEINTRESOURCE(32514) | 问号图标 |
IDI_SHIELD | MAKEINTRESOURCE(32518) | 安全防护罩图标 |
IDI_WARNING | MAKEINTRESOURCE(32515) | 感叹号状图标 |
IDI_WINLOGO | MAKEINTRESOURCE(32517) | 默认应用程序图标(Windows 2000 为Windows Logo图标) |
返回值
类型:HICON
如果成功,返回最近一次加载的图标句柄。
如果失败,返回NULL。
注意:
1、使用系统预定义图标,必须把第一个参数设置为NULL.
在初始化时,我们可以这样使用:
wndclass.hIcon = LoadIcon (NULL, IDI_APPLICATION) ;
相应的显示:
2、另外,我们也可以使用自定义的图标:
用到MAKEINTRESOURCE宏(这个宏是把一个数字类型 转换成 指针类型的宏, 原因是有的资源是用序号定义的,而不是字符串.)
wndclass.hIcon = LoadIcon (hInstance, MAKEINTRESOURCE(IDI_ICON1)) ;
在VS2012下的Resource View下的项目添加ICO文件,它会生成ID号,默认的IDI_ICON1.
3、常用的形式
3.1 在CWinApp中封装有该成员函数,有2种:
HICON LoadIcon( LPCTSTR lpszResourceName ) const;
HICON LoadIcon( UINT nIDResource ) const;
所以如果添加了资源,ID 为IDI_ICON1,调用时直接:
AfxGetApp()->LoadIcon(IDI_ICON1);
但是这种方法并不能加载系统预定义图标,在CWinApp中还有个装载图标的函数:
HICON LoadStandardIcon( LPCTSTR lpszIconName ) const;
如:
AfxGetApp()->LoadStandardIcon(IDI_QUESTION);
3.2 当然在MFC中可以调用全局函数来加载图标,但是如果要装载自己添加的图标资源,要注意下面几种写法:
LoadIcon(AfxGetApp()->m_hInstance,(LPCTSTR)IDI_ICON1);
LoadIcon(AfxGetApp()->m_hInstance,MAKEINTRESOURCE(ICON1));
LoadIcon(AfxGetInstanceHandle(),,MAKEINTRESOURCE(ICON1));
以上都是正确的.