应用程序的设置图标VS Express 2012 c++

Setting icon for application VS Express 2012 c++

本文关键字:Express 2012 c++ VS 图标 设置 应用程序      更新时间:2023-10-16

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

IDI_APP ICON "resources/Icon.ico"

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

  1. 仔细检查你创建了一个具有多种分辨率的。ico文件,通常是16x16, 32x32, 48x48, 96x96。

  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图标缓存,如这里所述或通过重新启动/注销。

附加资源和参考:

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

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