【问题标题】:Changing program icon dynamically动态更改程序图标
【发布时间】:2011-06-13 12:47:53
【问题描述】:

在 C++ 中,有没有办法让用户选择应用程序的图标?例如,Winamp 允许您从其首选项中的图标列表中选择您希望使用的图标。是怎么做到的?

【问题讨论】:

  • 可能会猜到 Windows(如在 Winamp 中)。尽管如此,仍然没有理由省略它。

标签: c++ windows icons


【解决方案1】:

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

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

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

我找到了一个discussion on changing icons,其中包含有关前两个选项的信息。

【讨论】:

    【解决方案2】:

    适用于基于 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() 时再次明确指定该图标。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2010-09-20
      • 1970-01-01
      相关资源
      最近更新 更多