我在Ubuntu 10.10上安装了wxWidgets 2.9.3
../configure --with-gtk
我正在使用Codeblocks IDE,并在其上轻松运行示例Dialogs程序。
但是当我试图在Windows上运行我的工作代码VS2010(wxWidgets 2.9.2)时,我收到了几个错误,并且运行时失败,如下所列
error: ‘class wxBitmap’ has no member named ‘UseAlpha’
error: ‘class wxPanel’ has no member named ‘SetBackgroundBitmap’
以下代码也会引发错误assert "m_menuItem" failed in Enable(): invalid menu item
wxMenuItem *undoMenuItem; wxMenu* editMenu = new wxMenu(_("")); undoMenuItem = new wxMenuItem(editMenu, idMenuUndo, _("&Undo\tCtrl+Z"), _("Undo the last action")); undoMenuItem->Enable(false); editMenu->Append(undoMenuItem);
如果我注释掉上面的代码,编译并运行,我得到SIGSEGV
并且调用堆栈是
0 0x168f07a cairo_save()(/ usr / lib / libcairo.so.2:??)
1 0x806520 wxCairoContext :: PushState()()(/ usr / local / lib / libwx_gtk2u_core-2.9.so.3:??)
2 0x805b38 wxCairoContext :: Init(_cao *)()(/ usr / local / lib / libwx_gtk2u_core-2.9.so.3:??)
3 0x80736a wxCairoContext :: wxCairoContext(wxGraphicsRenderer *,wxMemoryDC const&)()(/ usr / local / lib / libwx_gtk2u_core-2.9.so.3:??)
4 0x807401 wxCairoRenderer :: CreateContext(wxMemoryDC const&)()(/ usr / local / lib / libwx_gtk2u_core-2.9.so.3:??)
5 0x822f06 wxGraphicsContext :: Create(wxMemoryDC const&)()(/ usr / local / lib / libwx_gtk2u_core-2.9.so.3:??)
6 0x7c54b7 wxGCDCImpl :: wxGCDCImpl(wxDC *,wxMemoryDC const&)()(/ usr / local / lib / libwx_gtk2u_core-2.9.so.3:??)
7 0x7c554e wxGCDC :: wxGCDC(wxMemoryDC const&)()(/ usr / local / lib / libwx_gtk2u_core-2.9.so.3:??)
8 0x80555fd面包板::重置(此= 0x81713c0)(/ home /vinayak / code / IConBread / giftboard.cpp:79)
9 0x8054e57面包板::面包板(此= 0x81713c0)(/ home/vinayak/codes/IConBread/breadboard.cpp:17)
10 0x805d7c5接口::接口(此= 0x8171200,父= 0x81703e0,宽度= 900,高度= 570)(/ home /vinayak / code / IConBread / interface.cpp:24)
11 0x8069db4 MainFrame :: MainFrame(this = 0x8108af8,frame = 0x0,title = ...)(/ home /vinayak / code / IConBread / mainframe.cpp:127)
12 0x80525a8 Application :: OnInit(this = 0x80ab228)(/ home /vinayak / code / IConBread / application.cpp:27)
13 0x8053194 wxAppConsoleBase :: CallOnInit(this = 0x80ab228)(/usr/local/include/wx-2.9/wx/app.h:94)
14 0xc53000 wxEntry(int&,wchar_t **)()(/ usr / local / lib / libwx_baseu-1.9.so.3:??)
15 0xc530d7 wxEntry(int&,char **)()(/ usr / local / lib / libwx_baseu-2.9.so.3:??)
16 0x805245f main(argc = 1,argv = 0xbffff924)(/ home/vinayak/codes/IConBread/application.cpp:19)
这些错误的可能原因是什么?请记住,在Windows(VS2010)上,这是一个完美的代码 谢谢!
答案 0 :(得分:1)
我在wxWidgets开发人员的帮助下解决了上述问题。
UseAlpha
是MSW特定的,所以我不能在Linux上使用它wxPanel::SetBackgroundBitmap()
,从中派生您的课程
wxCustomBackgroundWindow
并使用相同名称的方法。bitmap.Create(kWidth, kHeight, 32);
在访问位图对象的函数之前。在使用bitmap
之后调用此行,重新排序行解决了问题。 wxGCDC
的透明度。