wxTaskBarIcon Problem
-
Hi, ich schon wieder, das Socket Problem schiebe ich erstmal zur seite und vergrößer den buffer.
Ich habe hier ein anderes Problem und zwar mit wxTaskBarIcon, ich habe eine Klasse davon abgeleitet und die CreatePopUpMenu - Methode Überschrieben, aber wenn ich das Icon benutzen will stürzt das Programm ab, hier der gesammte Code:
Das Problem ist, dass wenn ich in der main.cpp das set Icon auskommentiere geht alles perfekt, wenn ich es drinn lasse stürzt das Programm ab bevor man was sieht. Was ist Falsch? Btw, gibt es hier eigentlich sowas wie Spoiler?
Main:
TBIcon = new myTBI(this); wxIcon Icon("Uhr.ico"); if(!TBIcon->SetIcon(Icon, "NetChat")){ wxMessageBox("konnte Icon nicht setzen"); } }
TBI.h
#ifndef TBIH #define TBIH #include <wx/taskbar.h> class myTBI: public wxTaskBarIcon{ private: DECLARE_EVENT_TABLE(); wxMenu *mnuTBI; wxWindow *pFrmMain; public: myTBI(wxWindow *pFrm); virtual ~myTBI(); virtual wxMenu* CreatePopupMenu(); //event functions void MenuOpen(wxCommandEvent& event); void MenuQuit(wxCommandEvent& event); void evtDblClick(wxTaskBarIconEvent& event); //vars static const long ID_CLOSE; static const long ID_OPEN; }; #endif
und TBI.cpp
#include "TBI.h" #include <wx/menu.h> BEGIN_EVENT_TABLE(myTBI,wxTaskBarIcon) EVT_MENU(myTBI::ID_OPEN, myTBI::MenuOpen) EVT_MENU(myTBI::ID_CLOSE, myTBI::MenuQuit) EVT_TASKBAR_LEFT_DCLICK(myTBI::evtDblClick) END_EVENT_TABLE() wxMenu* myTBI::CreatePopupMenu() { mnuTBI = new wxMenu; mnuTBI->Append(ID_OPEN, wxT("Öffnen"), "", wxITEM_NORMAL); mnuTBI->Append(ID_CLOSE, wxT("Beenden"), "", wxITEM_NORMAL); return mnuTBI; } void myTBI::MenuOpen(wxCommandEvent& event) { pFrmMain->Show(true); } void myTBI::MenuQuit(wxCommandEvent& event) { this->RemoveIcon(); pFrmMain->Destroy(); this->~myTBI(); } void myTBI::evtDblClick(wxTaskBarIconEvent& event) { pFrmMain->Show(true); } myTBI::myTBI(wxWindow *pFrm):wxTaskBarIcon(){ pFrmMain = pFrm; } myTBI::~myTBI(){ }
-
Könntest du bitte nur den Teil des Problems posten, und nicht den ganzen Code?
-
Hi.
wxMenu* myTBI::CreatePopupMenu()
{
mnuTBI = new wxMenu;mnuTBI->Append(ID_OPEN, wxT("Öffnen"), "", wxITEM_NORMAL);
mnuTBI->Append(ID_CLOSE, wxT("Beenden"), "", wxITEM_NORMAL);return mnuTBI;
}Das Problem ist hier. Mach ne Member-Variable vom Typ wxMenu und arbeite mit der und gib hier den Zeiger zurück. Das sollte denke ich helfen. Hatte das Problem auch schon mal und ich glaube, das hat geholfen. Bin mir aber gerade nicht 100% sicher, nur 90% hihi.
rya.
-
Das mit dem Zeiger schien nicht das Problem gewesen zu sein, ich habe alle erdenklichen alternativen getestet, nichts hat funktioniert, ich habe den Code oben zusammen geschnitten, sry, dass ich alles gepostet hatte, ich weiß nicht, was ich mit da bei gedacht habe.
-
Was sagt der Debugger ?
-
Der Debugger sagt: 'recived SIGSEGV signal' und der Backtrace sieht folgender maßen aus:
#0 64C67A95 wxTopLevelWindowMSW::CreateFrame() (C:\SourceCode\Libraries\wxWidgets2.8\lib\gcc_dll\wxmsw28_gcc.dll:??) #1 64C67C92 wxTopLevelWindowMSW::Create() (C:\SourceCode\Libraries\wxWidgets2.8\lib\gcc_dll\wxmsw28_gcc.dll:??) #2 64CA006E wxFrame::Create() (C:\SourceCode\Libraries\wxWidgets2.8\lib\gcc_dll\wxmsw28_gcc.dll:??) #3 64E699D1 wxTaskBarIcon::SetIcon() (C:\SourceCode\Libraries\wxWidgets2.8\lib\gcc_dll\wxmsw28_gcc.dll:??) #4 004045BA WxSocketClientDialog::WxSocketClientDialog(this=0x22f960, parent=0x0, id=-1) (C:/Dokumente und Einstellungen/Ryu/Desktop/C++/WxSocketClient/WxSocketClientMain.cpp:101) #5 00401B13 WxSocketClientApp::OnInit(this=0xda1850) (C:/Dokumente und Einstellungen/Ryu/Desktop/C++/WxSocketClient/WxSocketClientApp.cpp:26) #6 0040B978 wxAppConsole::CallOnInit(this=0xda1850) (C:/SourceCode/Libraries/wxWidgets2.8/include/wx/app.h:76) #7 6C48E139 wxEntryReal() (C:\Dokumente und Einstellungen\Ryu\Desktop\C++\WxSocketClient\bin\Debug\wxbase28_gcc.dll:??) #8 6420865B wxEntry() (C:\Dokumente und Einstellungen\Ryu\Desktop\C++\WxSocketClient\bin\Debug\wxmsw28_core_gcc.dll:??) #9 00401A8E WinMain(hInstance=0x400000, hPrevInstance=0x0, lpCmdLine=0x251f3f "", nCmdShow=10) (C:/Dokumente und Einstellungen/Ryu/Desktop/C++/WxSocketClient/WxSocketClientApp.cpp:287) #10 00409BE8 main() (??:??)