LoadIcon() 函数原型如下:
1
2
3
4
|
HICON
LoadIcon(
HINSTANCE
hInstance,
LPCTSTR
lpIconName
);
|
该函数从与 hInstance 模块相关联的可执行文件中装入lpIconName指定的图标资源,仅当图标资源还没有被装入时该函数才执行装入操作,否则只获取装入的资源句柄。
比如,在对窗口类初始化时,我们可以如下使用:
1
2
|
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 所指示的图标。