• Windows入门基础:2.vs2013中Icon显示


    第一:系统小图标的显示

    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));

         看看我的自定义图标:

        

  • 相关阅读:
    [转]面向对象的三个基本特征
    C#验证Email
    天气预报
    【原】c#实现数字金额转换成大写金额
    C#发送Email
    DIV 显示最上层
    ArrayList 与 String[] 之间的转换
    Flex与.NET互操作(五):FileReference+HttpHandler实现上传/下载
    Flex与.NET互操作(三):基于WebService的数据访问(下)
    Flex与.NET互操作(六):Flex和.NET协同开发利器FluorineFx
  • 原文地址:https://www.cnblogs.com/lovexz/p/4888612.html
Copyright © 2020-2023  润新知