【问题标题】:Set window's upper left corner icon in wxMSW在 wxMSW 中设置窗口的左上角图标
【发布时间】:2011-10-14 17:01:54
【问题描述】:

我正在使用 wxWidgets(2.9 分支)开发一个项目。我正在使用 gcc 和 makefiles - 我在 Visual Studio 中发现的大部分问题。

问题是,我用 IcoFX 创建了一个图标,它包含几种不同大小的图标,包括应该显示在窗口角落的 16x16 图标。该图标确实会显示在 Windows 7 任务栏中,但不会出现在窗口的角落或 Alt+Tab 菜单中。

我的资源文件如下所示:

#include "wx/msw/wx.rc"
1 ICON "images/icon-win.ico"

无论我将什么作为图标的标识符(尝试 1、0、字符串、wx***)它都不会改变任何东西。

我正在使用windres将资源文件编译为COFF格式,然后与最终的可执行文件链接。

我也尝试过 wxFrame::SetIcon,但也没有用。

设置窗口图标有什么技巧吗?我已经看到了几种涉及 Windows API 的方法,但如果我不需要,我宁愿不去那里。我认为它应该在您将其放入资源文件时自动显示。

【问题讨论】:

    标签: windows icons mingw wxwidgets


    【解决方案1】:

    将此行添加到您的资源文件中:

    frame_icon ICON "images/icon-win.ico"
    

    将此行添加到您的框架构造函数

    SetIcon(wxICON(frame_icon));
    

    【讨论】:

    • 嗯,我不知道为什么使用数字作为标识符不会做任何事情,但这有效。谢谢!
    • C++ 标识符必须以字母开头。 cplusplus.com/doc/tutorial/variables
    • 当我使用数字时它编译得很好,它只是没有做任何事情。事实证明,它实际上并没有使用标识符。我在 wx 标头中找到了这个:#define wxICON(X) wxIcon(wxT(#X)) 所以我想它正在寻找一个名为“1”的资源,而它的 ID 是数字 1。
    【解决方案2】:

    试试这个

    frame->SetIcon(wxIcon(wxT("icon.ico"), wxBITMAP_TYPE_ICO));

    【讨论】:

    • 你能解释一下这是做什么的吗?
    • @AaronHall -> 您可以在 wxFrame 的窗口左上角设置图标,而无需使用任何资源文件。 frame_object_name->SetIcon(wxIcon(wxT("contents/myicon.ico"), wxBITMAP_TYPE_ICO)); 这是这个问题的另一种解决方案。如果有人不想使用资源文件,那么这是一种解决方案
    • 我正在查看答案,单行有时会被标记,我没有标记它,但我认为您可能应该编辑您的答案以包含您的解释。
    【解决方案3】:

    正如您所发现的,将图标放在资源文件中意味着它会显示在任务栏上并作为可执行图标显示。要将其设置为框架图标,您需要执行以下操作:

    frame->SetIcon(wxICON(1));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-14
      • 2021-07-23
      • 1970-01-01
      • 1970-01-01
      • 2016-08-28
      相关资源
      最近更新 更多