【发布时间】:2016-07-19 05:50:44
【问题描述】:
我正在使用 WM_SETICON 来更改应用程序的图标。这适用于程序在 VisualStudio 调试器中或通过命令行运行时,但在通过 Windows 7 上的桌面快捷方式启动时使用错误的任务栏图标。右键单击以将程序固定到任务栏,然后取消固定它会导致图标正确显示.
HICON icon = (HICON) LoadImage(NULL, iconStr, IMAGE_ICON, 32, 32, LR_LOADFROMFILE| LR_SHARED);
SendMessage(hwnd, WM_SETICON, ICON_BIG, (LPARAM)icon);
SendMessage(hwnd, WM_SETICON, ICON_SMALL, (LPARAM)icon);
SendMessage(hwnd, WM_SETICON, ICON_SMALL2, (LPARAM)icon);
似乎通过快捷方式启动会导致程序使用过时的缓存图标并忽略 WM_SETICON。程序标题栏旁边的小图标也在正常更新,只是任务栏上的图标有问题。
我确实需要以编程方式设置图标,因为它会根据命令行进行更改。有谁知道使这项工作的方法?谢谢。
【问题讨论】:
标签: c++ windows icons shortcut sendmessage