我想更改框架左上角显示的默认图标。
我尝试了很多方法 - xpm,ico,bmp,
建议here.使用SetIcon(wxIcon(wxT("icon.xpm")));
我尝试了不同的图标尺寸,16x16,24x24和32x32
我还尝试在resource.hrc文件中添加MYICON1 ICON "Logo.ico"
,在resource.h文件中添加#define MYICON1 101
,并在框架构造函数中添加SetIcon(wxIcon(MYICON1));
..
顺便说一句,我在visual studio 2010上使用wxwidgets 2.8
编辑:
我还尝试在resource.hrc文件中添加
MYICON1 ICON "Logo.ico"
,在resource.h文件中添加#define MYICON1 101
,在框架构造函数中添加SetIcon(wxIcon(MYICON1));
。
使用这种方法,我在wxIcon(int)构造函数中出现错误..
1> xsframe.cpp(17):错误C2248:'wxString :: wxString':无法访问类'wxString'中声明的私有成员
1 GT; C:\ Program Files(x86)\ Microsoft Visual Studio 10.0 \ VC \ include \ wx / string.h(682):参见'wxString :: wxString'的声明
1 GT; C:\ Program Files(x86)\ Microsoft Visual Studio 10.0 \ VC \ include \ wx / string.h(659):参见'wxString'的声明
PS,xsframe是我的主框架。我的图标我想改变。
答案 0 :(得分:2)
我从here引用Vaclav的回答:
您可以使用wxFrame :: SetIcon设置主框架的图标。应用 可以通过向.rc文件添加新的图标资源来更改图标:
appicon ICON "myapp.ico" #include "wx/msw/wx.rc"
请注意,此图标必须是.rc文件和中的第一个图标 当您按字母顺序对图标进行排序时,必须是第一个。这是 因为MS开发人员无法如何思考 确定应用程序的图标:它是Windows 9x下.rc文件中的第一个 和NT下的字母顺序第一个(反之亦然)。
大多数人通常会错过这个。希望能解决问题。
答案 1 :(得分:2)
操作SetIcon(wxICON(MYICON1));
在文件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
*/
答案 2 :(得分:1)
您写道:MYICON1 ICON" Logo.ico"在resource.rc文件中,和SetIcon(wxIcon(MYICON1));到框架构造函数
这就是我使用的方法。
您还需要做一些额外的步骤。在resource.h文件中,您需要定义MYICON1,如下所示:
#define MYICON1 101
你必须确保图标文件包含所有必需的分辨率 - 我总是确保它有16by16,32by32和256by256越多越好!
如果应用程序图标是资源文件中的FIRST图标,那么这是一个好主意。
我建议升级到wxWidgets v2.9.4 - 很多事情开始变得更好。
答案 3 :(得分:1)
使用图标的字符串名称,而不是数字标识符。查看任何wxWidgets示例以获取示例。
答案 4 :(得分:0)
快速,简单,不可移植,仅Windows解决方案(在Windows 7中为我工作,wxWidgets 3.0.4,vc110):
#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);
在窗口上做一些其他技巧可能有用吗?