LoadIcon() --加载一个图标资源
2012-04-16 21:29
211 查看
LoadIcon() 函数原型如下:
?
该函数从与 hInstance 模块相关联的可执行文件中装入lpIconName指定的图标资源,仅当图标资源还没有被装入时该函数才执行装入操作,否则只获取装入的资源句柄。
比如,在对窗口类初始化时,我们可以如下使用:
?
上面代码中,我们将标题栏上的图标定义为 IDI_ASTERISK ,编译运行后会看到标题栏上的图标为:
![](http://www.groad.net/bbs/attachment/128_10_43d12df89ff780e.png?8)
注意,上面函数中第一个参数为 NULL,此时使用的是系统预定义的图标,其它预定义选项可参考 MSDN,否则使用自定义的图标资源。还有一种选择图标的做法是,即使用 MAKEINTRESOURCE 宏对一个十六位数的资源标识符(高 8 位为0,低 8 位为图标资源ID)进行转换。使用该宏的时候,我们往往使用 Visual Studio 为我们自动产生资源头文件 resource.h 和 资源文件 OurProject.rc 。.rc 文件是个文本文件,我们可以在记事本里编辑它们,但一般不会直接去这么做。新建图标资源的操作结果会写到该文件中。比如,可以通过
VS 里的“文件”--> “新建” --> “文件”--> “图标文件(.ico)” 来新添加一个图标,接着可以编辑该图标,最后保存。如果要添加该新建的图标,可以在“解决方案资源管理器”窗口底下的“资源文件”文件夹下双击打开 "OurProject.rc“ 文件,接着右键点击“Icon “文件夹图标,在弹出的菜单中选择“添加资源”,在弹出的对话框中,选择“Icon”,然后点击右边的“导入”按钮,将之前编辑好的图标资源添加进来。如下图所示:
![](http://www.groad.net/bbs/attachment/128_10_807dcae55891302.png?17)
完后,我们可以看到左边的“资源视图”窗口里的 "Icon" 下面多了一项“IDI_ICON1”,这个就是我们自定义的图标。如下图所示:
![](http://www.groad.net/bbs/attachment/128_10_8b209213c0f345d.png?24)
在保存好上面的工作后,打开 resource.h 就可以看到多了一项定义:
#define IDI_ICON1 135
好了,现在可以用这个新建的自定义图标了,现在修改源码文件,正是使用 MAKEINTRESOURCE 这个宏来进行转换,比如:
mywcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON1));
再重新生成一下可执行文件,可以看到:
![](http://www.groad.net/bbs/attachment/128_10_c2390a8bcd693dc.png?10)
最后还需要注意的是,在窗口类中还有一个成员 hIconSm 。这是一个小图标句柄,如果该项为空,那么系统就会使用 hIcon 成员所指定的图标,并用合适的尺寸来使用它 --- 上面的步骤就是设置了 hIconSm 为空,而使用了 hIcon 所指示的图标。
?
比如,在对窗口类初始化时,我们可以如下使用:
?
![](http://www.groad.net/bbs/attachment/128_10_43d12df89ff780e.png?8)
注意,上面函数中第一个参数为 NULL,此时使用的是系统预定义的图标,其它预定义选项可参考 MSDN,否则使用自定义的图标资源。还有一种选择图标的做法是,即使用 MAKEINTRESOURCE 宏对一个十六位数的资源标识符(高 8 位为0,低 8 位为图标资源ID)进行转换。使用该宏的时候,我们往往使用 Visual Studio 为我们自动产生资源头文件 resource.h 和 资源文件 OurProject.rc 。.rc 文件是个文本文件,我们可以在记事本里编辑它们,但一般不会直接去这么做。新建图标资源的操作结果会写到该文件中。比如,可以通过
VS 里的“文件”--> “新建” --> “文件”--> “图标文件(.ico)” 来新添加一个图标,接着可以编辑该图标,最后保存。如果要添加该新建的图标,可以在“解决方案资源管理器”窗口底下的“资源文件”文件夹下双击打开 "OurProject.rc“ 文件,接着右键点击“Icon “文件夹图标,在弹出的菜单中选择“添加资源”,在弹出的对话框中,选择“Icon”,然后点击右边的“导入”按钮,将之前编辑好的图标资源添加进来。如下图所示:
![](http://www.groad.net/bbs/attachment/128_10_807dcae55891302.png?17)
完后,我们可以看到左边的“资源视图”窗口里的 "Icon" 下面多了一项“IDI_ICON1”,这个就是我们自定义的图标。如下图所示:
![](http://www.groad.net/bbs/attachment/128_10_8b209213c0f345d.png?24)
在保存好上面的工作后,打开 resource.h 就可以看到多了一项定义:
#define IDI_ICON1 135
好了,现在可以用这个新建的自定义图标了,现在修改源码文件,正是使用 MAKEINTRESOURCE 这个宏来进行转换,比如:
mywcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON1));
再重新生成一下可执行文件,可以看到:
![](http://www.groad.net/bbs/attachment/128_10_c2390a8bcd693dc.png?10)
最后还需要注意的是,在窗口类中还有一个成员 hIconSm 。这是一个小图标句柄,如果该项为空,那么系统就会使用 hIcon 成员所指定的图标,并用合适的尺寸来使用它 --- 上面的步骤就是设置了 hIconSm 为空,而使用了 hIcon 所指示的图标。
相关文章推荐
- windows程序设计 C语言之为窗口程序加入自定义的图标 LoadIcon() --加载一个图标资源 VC++6.0
- LoadIcon() --加载一个图标资源
- Windows Phone7或者SL中加载一个资源的方法
- 关于一个无法加载资源的错误问题
- win32窗口程序 -----1、加载资源图标
- 加载图标资源
- 使用MFC控件图标不会显示或资源不正常加载
- wxWidgets 在windows下加载图标资源
- 实现一个可以加载资源中隐藏的.exe可执行文件的程序
- 如何创建一个CSS3 Ajax加载图标没有图像
- Directx中如何利用离屏表面加载一个图片资源
- 如何创建一个CSS3 Ajax加载图标没有图像
- 解决一个图标资源的问题
- 如何创建一个CSS3 Ajax加载图标没有图像
- 解决一个图标资源的问题
- 如何构建一个完整的angular项目(一)--- 如何按需加载静态资源
- How to load a dll resource dialog box at an application Dialog box (怎么在一个应用程序对话框动态加载DLL里的资源对话框)
- LoadIcon(),加载系统图标说明
- 未能加载文件或程序集或它的某一个依赖项(针对资源问题,x86文件在x64上编译失败)
- MFC单文档视图之图标资源加载及绘制