标签:
第一步:“资源视图” -> 右击,“添加资源” -> 选择“Icon”(新建则是创建一个空白的图标,自己作画;导入则是添加图标文件到项目)。然后完毕,即可看到第三张图标的结果。
那么这样,我们添加好了图标,图标也有默认的ID了。那么我们就可以使用自定义的图标了。使用代码如下:
WNDCLASS wndclass; wndclass.hIcon = LoadIcon(hInstance, IDI_ICON1); ...
我们运行后,代码的IDI_ICON1底下有波浪线,提示未定义标识符哦。
没有经验的不知道怎么回事,有经验的就知道,这个ID是没有定义的位置的。因为,在你添加资源的时候,VS帮你创建了resource.h头文件,用于定义这些资源ID的。那么知道问题原因就好解决了,问题就是资源ID没有定义。既然已经有定义的头文件了,那么我们包含进来就可以了。看代码:
#include "resource.h"
然而发现,问题依然没有解决,因为IDI_ICON1底下还有波浪线。把光标放在上面看看,提示“错误:int类型的实参与LPCWSTR类型的形参不兼容”。知道什么问题了吗?传递给函数的参数类型不对。因为在resource.h中定义的IDI_ICON1是一个整型类型哦,见下面定义的代码:
#define IDI_ICON1 103
所以呀,这就是问题了。那么我们得知道需要的类型是什么样的。LPCWSTR是CONST WCHAR *LPCWSTR的类型别名,CONST是const的类型别名,WCHAR是wchar_t类型的别名,wchar_t是宽字符的字符类型,char是窄字符的字符类型。宽字符使用Unicode编码,窄字符使用多字节编码。对于这个部分的扩展阅读,请看《字符集与字符编码的关系详细分析》、《轻松彻底理解符号、字符和字符集(ASCII、Unicode) 》。所以,LPCWSTR实际上就是这个类型:const wchar_t*,也就是一个指向常量宽字符的指针类型。不过,这里你也只需要了解即可,因为Windows早已为我们准备好工具了,就是将整型类型转换为这个类型的宏MAKEINTRESOURCE。在宏括号中传入整型的ID。最后这个宏转换结果就是LPCWSTR类型了。这样就打工告成了。代码如下:
WNDCLASS wndclass;
wndclass.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON1));
看看我的自定义图标:
标签:
原文地址:http://www.cnblogs.com/lovexz/p/4888612.html