【问题标题】:Win32: Changing Program IconWin32:更改程序图标
【发布时间】:2011-12-01 03:04:21
【问题描述】:

我最初认为 IDI_ICON1 非常适合我的程序:

wndclass.hIcon         = LoadIcon (HINST_THISCOMPONENT, MAKEINTRESOURCE(IDI_ICON1));

该图标随后出现在我的主窗口和 Windows 资源管理器中的 .exe 文件的标题菜单的左上角。

我觉得我更喜欢 IDI_ICON2,所以我改变了:

wndclass.hIcon         = LoadIcon (HINST_THISCOMPONENT, MAKEINTRESOURCE(IDI_ICON2));

现在 icon2 出现在标题菜单的左上角,但 Windows 资源管理器中的图标仍显示为 icon1。我错过了什么?

【问题讨论】:

  • 这可能是由于缓存。尝试移动到不同的文件夹或重命名它。否则尝试重新启动。
  • 我刚刚重新启动并重建了应用程序,但它仍然显示 icon1。我还将程序复制到另一个文件夹中,仍然是 icon1。窗口类的这个字段是Win32中唯一处理程序图标的区域吗?
  • 那我猜我猜错了……XD
  • 可以是IconCache.db ...关闭explorer.exe,删除文件,然后重启。

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


【解决方案1】:

Explorer 获取可执行文件中的第一个图标。那将是 ID 最低的那个。尝试管理您的资源,以便将 IDI_ICON2 定义为小于 IDI_ICON1 的整数。

【讨论】:

  • 看来你是对的。我交换了图标的 ID,而 icon1 似乎是在资源管理器中显示的,无论窗口类中设置的图标如何。感谢您的建议。
  • @user974967:只是想澄清一下窗口类与可执行文件及其资源无关。
  • .rc 文件使用资源编译器进行编译,然后与可执行文件链接。它是否正确?代码中唯一处理图标(我知道)的区域是窗口类设置。但是,我想这只是决定了标题栏中显示的图标。
  • 另外,您知道如何确定删除、复制/替换或“预览”中显示的图标吗?如果有办法在 VS 中执行此操作,我宁愿不要使用 .rc 文件。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-09-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-03-03
  • 2013-05-31
  • 1970-01-01
相关资源
最近更新 更多