第一:系统小图标的显示

wndclass.hIcon = LoadIcon(NULL,IDI_WARNING); //LoadIcon函数的第一的参数要为0,第二个参数是系统自定义的ID号:

IDI_APPLICATION:作为应用程序默认的图标。
    IDI_QUESTION:当你的窗口作为一个选择时,使用这个提问图标很适合。
    IDI_ERROR:当操作发现错误时,提示窗口使用错误图标,非常准确的告知用户发生了错误。
    IDI_WARNING:当操作可能会产生危险时,比如确定后,地球就要爆炸了,你一定要警告哦。
    IDI_INFORMATION:当需要给用户提供更多提示信息时,用这个图标很友善和惬意。
    IDI_SHIELD:当涉及到用户权限时,才会用这个图标。比如需要一定的权限才能开启炸毁地球的操作,就用权限的盾牌图标很清楚的表达了这个意思。

第二:自定义小图标的显示

资源视图” -> 右击,“添加资源” -> 选择“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));

看看我的自定义图标:

Windows入门基础:2.vs2013中Icon显示的更多相关文章

  1. [安卓基础] 008.Android中的显示单位

    *:first-child { margin-top: 0 !important; } body > *:last-child { margin-bottom: 0 !important; } ...

  2. Windows入门基础:1.关于CreateWindow()函数使用中遇到的问题

    我在实现显示窗口的程序中,遇到一个问题:首先程序没有任何语法错误,编译能够通过,但是就是不能弹出窗口. 后来在MSDN中查询CreateWindow()函数,发现了下面这句话: "If lp ...

  3. VS2013中Python学习笔记[基础入门]

    前言 在上一节中简单的介绍了在VS2013中如何进行开发Hello World,在VS2013中进行搭建了环境http://www.cnblogs.com/aehyok/p/3986168.html. ...

  4. VS2013中Nuget程序包管理器控制台使用入门(三)-项目实战(原创)

    VS2013中Nuget程序包管理器控制台使用入门(三)-项目实战 1.给指定项目安装Newtonsoft.Json ,Version 4.5.11 PM> Install-Package Ne ...

  5. Windows下Git中正确显示中文的设置方法

    Windows下Git中正确显示中文的设置方法 具体设置方法如下: 进入目录etc:$ cd /etc 1. 编辑 gitconfig 文件:$ vi gitconfig.在其中增加如下内容: [gu ...

  6. HTML入门基础教程相关知识

    HTML入门基础教程 html是什么,什么是html通俗解答: html是hypertext markup language的缩写,即超文本标记语言.html是用于创建可从一个平台移植到另一平台的超文 ...

  7. Vim入门基础

    公司新员工学习有用到,Vim官网的手册又太大而全,而网上各方资料要么不全面,要么不够基础.在网上搜集各方资料,按照自己的框架整理一份Vim入门基础教程,分享出来.特点是偏向基础,但对入门者来说足够全面 ...

  8. CodeMix入门基础知识

    CodeMix在线订购年终抄底促销!火爆开抢>> CodeMix入门 CodeMix是一个Eclipse插件,可以直接从Eclipse访问VS Code和为Code OSS构建的附加扩展的 ...

  9. Linux入门基础篇

    Linux入门基础篇 Linux诞生 Linux发行版本说明 Linux官方网站 Linux内核官方网站 比较有名的Linux发行版 虚拟机(Virtual Machine),一个虚拟的系统,安装在系 ...

随机推荐

  1. BeautifulSoup简述

    网页解析器 从网页中提取有价值数据的工具 网页解析器种类 正则表达式 (模糊匹配) html.parser (结构化解析) BeautifulSoup第三方插件 (结构化解析,相对比较强大) lxml ...

  2. react基础学习

    什么是react:React(有时称为React.js 或ReactJS)是一个为数据提供渲染HTML视图的开源JavaScript库; 其特点: 声明式设计:采用声明范式,可以轻松描述应用高效:通过 ...

  3. ftp服务搭建

    文件传输服务 主配置文件目录/etc/vsftpd/vsftpd.conf 首先安装ftp服务器 yum install vsftpd 默认存放文件的目录  /var/ftp/pub 匿名登陆 创建一 ...

  4. 做了个新的UWP类库 Sharp2D

    C#开发UWP的时候如果要实现高斯模糊效果的话,最好的选择似乎是微软的Win2D 但是Win2D太过庞大了,仅仅是庞大其实也没啥问题,毕竟net core就很庞大,但Win2d是一个Winmd组件 w ...

  5. 快速排序算法javascript实现

    function quicksort(arr){ function q(start,end){ if(start>=end){return;} var pivot = start, temp = ...

  6. 利用instsrv和srvany来手动安装服务

    Windows提供了两个小工具instsrv.exe和srvany.exe来把任何应用包装成windows服务.顾名思义instsrv(install service)是用来安装服务的,而srvany ...

  7. 一篇文章为你深度解析HTTPS 协议

    一.前言 微信小程序如期发布,开发者在接入微信小程序过程中,会遇到以下问题: 小程序要求必须通过 HTTPS 完成与服务端通信,若开发者选择自行搭建 HTTPS 服务,那需要自行 SSL 证书申请.部 ...

  8. 2659: [Beijing wc2012]算不出的算式

    2659: [Beijing wc2012]算不出的算式 Time Limit: 3 Sec  Memory Limit: 128 MBSubmit: 757  Solved: 425[Submit] ...

  9. c#进程之间对象传递方法

    1. 起源 KV项目下载底层重构升级决定采用独立进程进行Media下载处理,以能做到模块复用之目的,因此涉及到了独立进程间的数据传递问题. 目前进程间数据传递,多用WM_COPYDATA.共享dll. ...

  10. Linux云自动化运维第二课

    一.Linux系统结构 1.Linux是一个倒树结构.Linux中所有的东西都是文件.这些文件都在系统的顶级目录中"/","/"是根目录."/&quo ...