LoadIcon的使用
函数原型:
HICON WINAPI LoadIcon ( HINSTANCE hInstance, LPCTSTR lpIconName );
参数
1.hInstance类型:HINSTANCE
图标资源所在模块的实例句柄。如果是标准图标,此参数必须为NULL。
2.lpIconName类型:LPCTSTR 图标资源名或资源标识符,资源标识符由16位组成,在低16位,高16位为0。宏 MAKEINTRESOURCE 可以将资源标识符强制转换成参数的资源名类型。如果使用预定义的图标,需要将hInstance参数设置成NULL,并且lpIconName值必须是以下之一:
宏名宏值意义IDI_APPLICATIONMAKEINTRESOURCE(32512)默认应用程序图标IDI_ASTERISKMAKEINTRESOURCE(32516)星状图标,同 IDI_INFORMATIONIDI_ERRORMAKEINTRESOURCE(32513)手型图标IDI_EXCLAMATIONMAKEINTRESOURCE(32515)感叹号状图标,同 IDI_WARNINGIDI_HANDMAKEINTRESOURCE(32513)手型图标,同 IDI_ERRORIDI_INFORMATIONMAKEINTRESOURCE(32516)星状图标IDI_QUESTIONMAKEINTRESOURCE(32514)问号图标IDI_SHIELDMAKEINTRESOURCE(32518)安全防护罩图标IDI_WARNINGMAKEINTRESOURCE(32515)感叹号状图标IDI_WINLOGOMAKEINTRESOURCE(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));
以上都是正确的.