曲径通幽论坛

 找回密码
 立即注册
搜索
查看: 5592|回复: 0
打印 上一主题 下一主题

LoadIcon() --加载一个图标资源

[复制链接]

4918

主题

5880

帖子

3万

积分

GROAD

曲径通幽,安觅芳踪。

Rank: 6Rank: 6

积分
34397
跳转到指定楼层
楼主
发表于 2012-1-26 16:03:18 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
LoadIcon() 函数原型如下:
[C++] 纯文本查看 复制代码
HICON LoadIcon(
  HINSTANCE hInstance, 
  LPCTSTR lpIconName
);

该函数从与 hInstance 模块相关联的可执行文件中装入lpIconName指定的图标资源,仅当图标资源还没有被装入时该函数才执行装入操作,否则只获取装入的资源句柄。

比如,在对窗口类初始化时,我们可以如下使用:
[C++] 纯文本查看 复制代码
WNDCLASSEX mywcex;
mywcex.hIcon = LoadIcon(NULL,IDI_ERROR);

上面代码中,我们将标题栏上的图标定义为 IDI_ASTERISK ,编译运行后会看到标题栏上的图标为:

注意,上面函数中第一个参数为 NULL,此时使用的是系统预定义的图标,其它预定义选项可参考 MSDN,否则使用自定义的图标资源。还有一种选择图标的做法是,即使用  MAKEINTRESOURCE 宏对一个十六位数的资源标识符(高 8 位为0,低 8 位为图标资源ID)进行转换。使用该宏的时候,我们往往使用 Visual Studio 为我们自动产生资源头文件 resource.h 和 资源文件 OurProject.rc 。.rc 文件是个文本文件,我们可以在记事本里编辑它们,但一般不会直接去这么做。新建图标资源的操作结果会写到该文件中。比如,可以通过 VS 里的“文件”--> “新建” --> “文件”--> “图标文件(.ico)” 来新添加一个图标,接着可以编辑该图标,最后保存。如果要添加该新建的图标,可以在“解决方案资源管理器”窗口底下的“资源文件”文件夹下双击打开 "OurProject.rc“ 文件,接着右键点击“Icon “文件夹图标,在弹出的菜单中选择“添加资源”,在弹出的对话框中,选择“Icon”,然后点击右边的“导入”按钮,将之前编辑好的图标资源添加进来。如下图所示:

完后,我们可以看到左边的“资源视图”窗口里的 "Icon" 下面多了一项“IDI_ICON1”,这个就是我们自定义的图标。如下图所示:

在保存好上面的工作后,打开 resource.h 就可以看到多了一项定义:
#define IDI_ICON1                       135
好了,现在可以用这个新建的自定义图标了,现在修改源码文件,正是使用 MAKEINTRESOURCE  这个宏来进行转换,比如:
mywcex.hIcon = LoadIcon(hInstance, MAKEINTRESOURCE(IDI_ICON1));
再重新生成一下可执行文件,可以看到:


最后还需要注意的是,在窗口类中还有一个成员 hIconSm 。这是一个小图标句柄,如果该项为空,那么系统就会使用 hIcon 成员所指定的图标,并用合适的尺寸来使用它 --- 上面的步骤就是设置了 hIconSm 为空,而使用了 hIcon 所指示的图标。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|手机版|Archiver|曲径通幽 ( 琼ICP备11001422号-1|公安备案:46900502000207 )

GMT+8, 2025-6-17 16:19 , Processed in 0.084746 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表