WxWidgets Key Events
-
Hi,
ich würde mich echt freuen, wenn ihr mir bei folgenden Problem helfen könntet.
Also, ich habe einen kleinen Editor geschrieben und das Problem, dass ich innerhalb einer KeyEvent-Funtion kein neues wxPanel anlegen kann. Das erzeugen eines neuen Panels funktioniert aber wunderbar ausserhalb der KeyEvent-Funktion. Als Fehlermeldung kommt: "can't create wxWindow without parent"
Hier ist ein Ausschnitt des Programms:
wxNanoFrame::wxNanoFrame( wxFrame *frame, const wxString& title ) : wxFrame( frame, -1, title ) { SetTitle(title); SetIcon(wxNullIcon); SetSize(8,8,640,480); Center(); MainNotebook = new wxNotebook(this,wxID_ANY); WinCMD = new wxTextCtrl(this,wxID_ANY); WinCMD->Connect(wxEVT_KEY_DOWN,wxKeyEventHandler(wxNanoFrame::OnKeyDown)); } void wxNanoFrame::OnKeyDown(wxKeyEvent& event) { if (event.GetKeyCode() == WXK_RETURN) { wxWindow *p = (wxWindow*)event.GetEventObject(); if( p->IsKindOf(CLASSINFO(wxTextCtrl) ) ) { wxTextCtrl *pText = (wxTextCtrl *)p; pText->SetValue(wxT("")); wxPanel* WinNew = new wxPanel(MainNotebook,wxID_ANY); // Das funktioniert nicht! } } else event.Skip(); }
Ich weiß echt nicht mehr weiter und bin über jeden Tip sehr dankbar
Viele Grüße
AsaKagi
-
Wieso erzeugst du ein wxPanel als Kind des Notebooks?
-
Ich denke, das ist das normale Verfahren, um ein wxNotebook mit Seiten zu füllen.
Nebenbei, ich habe eine Lösung für mein Problem gefunden. Man muß bei der Connect-Funktion einen SinkPointer mit übergeben. Dann funktioniert es:
WinCMD->Connect(wxEVT_KEY_DOWN,wxKeyEventHandler(wxNanoFrame::OnKeyDown,NULL,this);
-
Ist der Parentzeiger vielleicht NULL?
Wäre imho der einzig mögliche Fehler hier.