动态更改程序图标

时间:2011-06-13 12:47:54

标签: c++ windows icons

在C ++中,无论如何让用户选择应用程序的图标?例如,Winamp允许您从其首选项中的图标列表中选择要使用的图标。怎么做?

2 个答案:

答案 0 :(得分:5)

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

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

还有捷径。它们也可以更改,在快捷方式中,您可以指定应使用哪个图标。

我发现discussion on changing icons有关于前两个选项的信息。

答案 1 :(得分:1)

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

A. 在资源视图中,右键单击“图标”文件夹并添加图标。给它一个像IDI_MYICON的ID。保持原样或画出好看的东西。

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

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

您可以在帮助中阅读有关这些功能的内容,以了解正在发生的事情。

这会将图标设置为sysmenu(topleft)和任务栏中的图标。但是,并非在所有情况下都会自动反映出来。例如。对于系统托盘图标,您需要在调用Shell_NotifyIcon()时再次显式指定图标。