【问题标题】:Setting icon for application VS Express 2012 c++应用程序 VS Express 2012 c++ 的设置图标
【发布时间】:2014-07-30 15:21:41
【问题描述】:

我一直在尝试将图标作为资源添加到我的应用程序中,以便使用 c++ 在 VS 2012 Express 中与我的应用程序一起显示。到目前为止,我已经从其他问题和论坛中挑选了以下代码添加到我的 rc 文件中。

IDI_APP ICON "resources/Icon.ico"

该图标与exe一起显示在桌面上,并在程序运行时显示在任务栏上。但是在某些情况下,例如在任务管理器上,应用程序的图标不会显示,而是显示默认程序图标。我想知道是否有人知道如何更改我的代码,以便图标始终与我的程序相关联。我听说这个问题可能是由于需要不同大小的图标造成的,但是我的 ico 文件中有许多大小的图标是用 IcoFX 程序创建的。我还想知道是否需要以编程方式设置图标以使其在与应用程序关联的任何地方工作。我尝试重建和重命名我的程序以更新外壳中的图标。我使用的是 sfml 窗口,而不是 winapi 和 HWND 窗口。

【问题讨论】:

  • 谷歌“重置外壳图标缓存”。快速检查正在重命名您的程序。
  • 我重命名了我的程序,但没有帮助

标签: c++ visual-studio-2012 resources icons sfml


【解决方案1】:
  1. 仔细检查您是否创建了具有多种分辨率(通常为 16x16、32x32、48x48、96x96)的单个 .ico 文件。

  2. 用类似的东西加载你的图标

    ICON hIcon = LoadIcon(GetModuleHandle(NULL), MAKEINTRESOURCE(IDI_ICON1));
    
  3. 通知图标的 Windows 消息

    //Change both icons to the same icon handle.
    SendMessage(hwnd, WM_SETICON, ICON_SMALL, hIcon);
    SendMessage(hwnd, WM_SETICON, ICON_BIG, hIcon);
    
    //This will ensure that the application icon gets changed too.
    SendMessage(GetWindow(hwnd, GW_OWNER), WM_SETICON, ICON_SMALL, hIcon);
    SendMessage(GetWindow(hwnd, GW_OWNER), WM_SETICON, ICON_BIG, hIcon);
    
  4. 最后重置 shell 图标缓存 as described here 或重启/注销。

其他资源和参考资料:

https://stackoverflow.com/a/19656000/1938163

https://stackoverflow.com/a/2723270/1938163

【讨论】:

猜你喜欢
  • 1970-01-01
  • 2011-02-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-09-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多