gpt4 book ai didi

c++ - 通过快捷方式启动程序时 WM_SETICON 不工作

转载 作者:行者123 更新时间:2023-11-28 05:45:26 24 4
gpt4 key购买 nike

我正在使用 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。程序标题栏旁边的小图标也正常更新,只有任务栏上的图标有问题。

我确实需要以编程方式设置图标,因为它会根据命令行进行更改。有谁知道使这项工作有效的方法吗?谢谢。

最佳答案

我确实找到了解决方法。由于快捷方式引用的 exe 无法更改其图标,因此它可以启动具有不同文件名的 exe,然后可以使用 WM_SETICON 更改任务栏图标。

每个快捷方式 (1-n) 都有自己的图标并指向 IgnoresWMSetIcon.exe。在启动时 IgnoresWMSetIcon.exe 启动 CanChangeIcon.exe 然后关闭。然后 CanChangeIcon.exe 就可以正常运行了。

如果有人知道,仍然对解释为什么会这样感兴趣。

关于c++ - 通过快捷方式启动程序时 WM_SETICON 不工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36322164/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com