动态更改程序图标

Changing program icon dynamically

本文关键字:图标 更改程序 动态      更新时间:2023-10-16

在C++中,有没有让用户选择应用程序的图标?例如,Winamp允许您从其首选项中的图标列表中选择要使用的图标。它是如何完成的?

这是您在资源管理器中看到的图标。这是可执行文件中的资源。你可以改变这一点,但我不会也建议你。如果可执行文件被修改,病毒扫描程序可能会感到紧张,在Windows Vista中,你甚至不被允许在Program Files文件夹中写入。

但是显示在任务栏或系统任务栏上的图标可以更改。这实际上是应用程序窗口的图标,可以通过发送WM_SETICON消息进行设置。

还有一些捷径。它们也可以更改,并且可以在快捷方式中指定应使用的图标。

我发现了一个关于更改图标的讨论,其中包含前两个选项的信息。

对于Visual Studio 2010,在基于MFC对话框的应用程序中

A在资源视图中,右键单击图标文件夹并添加图标。给它一个类似IDI_MYICON的ID。让它保持原样,或者画一些好看的东西。

B转到OnInitDialog。添加以下两行代码:

HICON hMyIcon = LoadIcon( AfxGetInstanceHandle(), MAKEINTRESOURCE(IDI_MYICON) );
SetIcon( hMyIcon, FALSE ); // FALSE == use as small icon

您可以在帮助中阅读有关这些函数的信息,以了解正在发生的情况

这将图标设置为系统菜单(左上方)和任务栏中的图标。然而,这并不是自动反映在所有情况下。例如,对于systray图标,您需要在对Shell_NotifyIcon()的调用中再次显式指定该图标。