第一:系统小图标的显示

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. WPF DataGrid Drag

    自己实现的功能.代码比较简单的DataGrid的Drag处理,着重处理DataGrid里的拖动排序. using System; using System.Collections.Generic; u ...

  2. laravel中的Database Notifications

    创建Post and  User模型 php artisan make:model Post php artisan make:model User 创建posts and  users 表文件 ph ...

  3. opensessioninviewFilter导致org.hibernate.NonUniqueObjectException

    起因: 公司业务需求,增加了一个新的数据源,增加之后,起初一切正常,但是发现后台管理系统所有Ajax请求获取信息没有问题,但是涉及到保存操作就抛出异常. 异常: org.hibernate.NonUn ...

  4. Python入门教程(3)

    人生苦短,我学Pyhton Python(英语发音:/ˈpaɪθən/), 是一种面向对象.解释型计算机程序设计语言,由Guido van Rossum于1989年底发明,第一个公开发行版发行于199 ...

  5. HTML5周记(一)

    各位开发者朋友和技术大神大家好!博主刚开始学习html5 ,自本周开始会每周更新技术博客,与大家分享每周所学.鉴于博主水品有限,如发现有问题的地方欢迎大家指正,有更好的意见和建议可在评论下方发表,我会 ...

  6. 算法模板——Tarjan强连通分量

    功能:输入一个N个点,M条单向边的有向图,求出此图全部的强连通分量 原理:tarjan算法(百度百科传送门),大致思想是时间戳与最近可追溯点 这个玩意不仅仅是求强连通分量那么简单,而且对于一个有环的有 ...

  7. 使用D3 Geo模块画澳大利亚地图

    数据 数据可视化主要旨在借助于图形化手段,清晰有效地传达与沟通信息.因此做数据可视化前需要想明白2件事: 你有什么数据? 你要传达什么信息? 本文中的示例中,将以不同的颜色显示澳大利亚不同地区的客户数 ...

  8. React 入门之路(1)

    React React简介 是由Facebook公司推广的一套框架,已经应用instagram等产品 React就是为了提供应用程序性能而设计的一套框架 在angular中,对dom提供了一些指令,让 ...

  9. DOM的内部插入和外部插入

    /*****************返回值都是最前面调用这个方法的元素 ***************** */ //这是外部插入 $("div").insertBefore($( ...

  10. java-信息安全(五)-非对称加密算法RSA

    概述 信息安全基本概念: RSA算法(Ron Rivest.Adi Shamir.Leonard Adleman,人名组合) RSA RSA公钥加密算法是1977年由罗纳德·李维斯特(Ron Rive ...