【发布时间】:2011-06-13 12:47:53
【问题描述】:
在 C++ 中,有没有办法让用户选择应用程序的图标?例如,Winamp 允许您从其首选项中的图标列表中选择您希望使用的图标。是怎么做到的?
【问题讨论】:
-
可能会猜到 Windows(如在 Winamp 中)。尽管如此,仍然没有理由省略它。
在 C++ 中,有没有办法让用户选择应用程序的图标?例如,Winamp 允许您从其首选项中的图标列表中选择您希望使用的图标。是怎么做到的?
【问题讨论】:
您在资源管理器中看到的图标。这是可执行文件中的资源。你可以改变它,但我也不建议你。如果修改了可执行文件,病毒扫描程序可能会感到紧张,在 Windows Vista 中,您甚至不被允许在 Program Files 文件夹中写入内容。
但可以更改任务栏或系统托盘中显示的图标。这实际上是您的应用程序窗口的图标,可以通过发送 WM_SETICON 消息来设置。
还有捷径。它们也可以更改,您可以在快捷方式中指定应该使用哪个图标。
我找到了一个discussion on changing icons,其中包含有关前两个选项的信息。
【讨论】:
适用于基于 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
您可以在帮助中阅读这些功能以了解正在发生的事情。
这会将图标设置为系统菜单(左上角)和任务栏中的图标。然而,这并不是在所有情况下都会自动反映出来。例如。对于系统托盘图标,您需要在调用 Shell_NotifyIcon() 时再次明确指定该图标。
【讨论】: