【问题标题】:Adding custom icon to project built in Visual Studio 2010向 Visual Studio 2010 中构建的项目添加自定义图标
【发布时间】:2013-06-10 11:21:04
【问题描述】:

我无法找到执行此操作的文档。在这里找到了一些其他帖子,但我仍然无法让它工作。这是我尝试过的:

我将文件系统中的 .ico 文件作为图标资源添加到我的项目中,并使用默认 ID IDI_ICON1。

然后我修改了 resources.h 并将 IDI_ICON1 值更改为列表中的最低值 (101)。

在我的代码中,我这样调用 LoadIcon:

hIcon = ::LoadIcon(NULL, MAKEINTRESOURCE(IDI_ICON1));

然后我清理并构建我的项目,但它仍在使用以前的 IDI_EXCLAMATION 图标。

任何想法我缺少什么?

【问题讨论】:

  • 嗯,所以在资源管理器中,我的 .exe 图标设置为我所期望的。但在任务栏和弹出对话框中却不是。我稍后在代码中发现了对 SetIcon 的调用,当我删除它时,我的图标正确显示在任务栏中,但仍然不在打开的对话框中。因此,对话窗口的“默认”图标似乎覆盖了我的自定义图标。

标签: c++ visual-studio-2010 icons


【解决方案1】:

当资源管理器需要在文件夹窗口中显示图标时,它会直接从可执行文件中检索图标。然而,任务栏使用与应用程序窗口关联的图标。您可以通过在传递给RegisterClassWNDCLASS 实例中设置它来指定要使用的图标。您也可以在创建窗口后使用WM_SETICON 窗口消息更改它。

对于对话框窗口,您可以像在创建对话框时处理WM_INITDIALOG 消息一样使用WM_SETICON 窗口消息。

【讨论】:

  • 感谢您提供的信息。它最终引导我找到了解决方案。一天结束时,我发现对话框和任务栏中的图标没有更新的原因是因为我将 NULL 传递给 LoadIcon 而不是模块的句柄。因此,在调用 GetModuleHandle(NULL) 并将其传递给 LoadIcon 之后,事情开始按我的预期工作。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2014-04-03
  • 1970-01-01
  • 2011-05-28
  • 2017-05-01
  • 2011-04-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多