我想更改框架左上角显示的默认图标。 我尝试了很多方法 - xpm、ico、bmp、 按照此处的建议使用
SetIcon(wxIcon(wxT("icon.xpm")));
。
我尝试了不同的图标大小,16x16、24x24 和 32x32。MYICON1 ICON "Logo.ico"
,在resource.h文件中添加
#define MYICON1 101
,以及在框架构造函数中添加
SetIcon(wxIcon(MYICON1));
..
我还尝试在resource.rc文件中添加使用这种方法,我在 wxIcon(int) 构造函数中遇到错误..
MYICON1 ICON "Logo.ico"
,在resource.h文件中添加#define MYICON1 101
以及在框架构造函数中添加SetIcon(wxIcon(MYICON1));
..
1>xsframe.cpp(17): 错误 C2248: 'wxString::wxString' : 无法访问类 'wxString' 中声明的私有成员PS,xsframe 是我的主框架。我正在尝试更改其图标。1> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\wx/string.h(682) :参见 'wxString::wxString' 的声明
1> C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\include\wx/string.h(659) :参见 'wxString' 的声明
在文件 gdicmn.h 中,第 166 行
/* Useful macro for creating icons portably, for example:
wxIcon *icon = new wxICON(sample);
expands into:
wxIcon *icon = new wxIcon("sample"); // On Windows
wxIcon *icon = new wxIcon(sample_xpm); // On wxGTK/Linux
*/
here引用Vaclav的回答:
您可以使用wxFrame::SetIcon 设置主框架的图标。应用 可以通过向 .rc 文件添加新的图标资源来更改图标:大多数人通常会错过这一点。希望能解决问题。
appicon ICON "myapp.ico" #include "wx/msw/wx.rc"
请注意,此图标必须是 .rc 文件中的第一个图标并且 当您按字母顺序对图标进行排序时,必须是第一个。这是 因为微软开发人员无法决定如何 确定应用程序的图标:它是Windows 9x下.rc文件中的第一个图标 以及 NT 下按字母顺序排列的第一个(反之亦然)。
这就是我使用的方法。
您需要执行一个额外步骤。 在resource.h文件中,您需要定义MYICON1,如下所示:
#define MYICON1 101
你必须确保图标文件包含所有必需的分辨率 - 我总是确保它有 16by16、32by32 和 256by256 越多越好!
如果应用程序图标是资源文件中的第一个图标,这是一个好主意。
我建议升级到 wxWidgets v2.9.4 - 很多事情开始工作得更好。
#ifdef __WXMSW__
#include "wx/msw/private.h" //for wxGetInstance()
#endif
...
//in Frame's constructor:
HWND hWnd = this->GetHandle();
HINSTANCE hInstance = wxGetInstance();
HICON hIcon = ExtractIcon(hInstance, L"someicon.ico", 0);
SetClassLongPtr(hWnd, GCLP_HICONSM, (LONG_PTR)hIcon);
在窗口上做一些其他的技巧可能有用吗?
wxIcon appIcon;
appIcon.LoadFile("IDI_APP_ICON", wxBITMAP_TYPE_ICO_RESOURCE);
if (appIcon.IsOk()) { SetIcon(appIcon); }