[wxw] button benutzen?
-
Hallöchen ich habe folgenden Code
#include <wx/wx.h> #include <wx/textctrl.h> #include <wx/button.h> #include <string> class Simple : public wxFrame { public: Simple(const wxString& title); void identifizieren(wxCommandEvent& WXUNUSED(event)); private: DECLARE_EVENT_TABLE() }; BEGIN_EVENT_TABLE(Simple, wxFrame) EVT_BUTTON(1005, Simple::identifizieren) END_EVENT_TABLE() Simple::Simple(const wxString& title) : wxFrame(NULL, wxID_ANY, title, wxDefaultPosition, wxSize(250, 90)) { wxWindow *parent; wxTextCtrl* textCtrl = new wxTextCtrl(parent, 1004, wxEmptyString, wxDefaultPosition, wxSize(235, 25), wxTE_PASSWORD); wxButton* Button = new wxButton(parent, 1005, _T("&Identifizieren"), wxPoint(0,30), wxDefaultSize); } void Simple::identifizieren(wxCommandEvent& WXUNUSED(event)) { std::string Passwort; //ZEILE 33 Passwort = Button->GetValue(); Close(true); } class MyApp : public wxApp { public: virtual bool OnInit(); }; IMPLEMENT_APP(MyApp) bool MyApp::OnInit() { Simple *simple = new Simple(_T("Identifizieren")); simple->Show(true); return true; }
Das war ein Beispiel, welches ich editiert habe. Nun wollte ich, dass wenn man den "Identifizieren"-Button klickt der Inhalt der EditBox in einer Variable gespeichert wird und das Fenster geschlossen wird. Doch ich kann *Button nicht verwenden?
1>.\main.cpp(33) : error C2065: 'Button': nichtdeklarierter Bezeichner 1>.\main.cpp(33) : error C2227: Links von "->GetValue" muss sich ein Zeiger auf Klassen-/Struktur-/Union-/generischen Typ befinden. 1> Typ ist ''unknown-type''
Wie kann ich denn nun von der EditBox "*textCtrl" den Text in einen String speichern, wenn ich auf den Button "*Button" klicke?
Ich verstehe noch nicht wirklich viel von wxWidgets wie man sieht, aber an diesem Fehler sitze ich schon so lange und kenne gerade keinen Ausweg mehr
-
Sorry es sollte so heißen:
void Simple::identifizieren(wxCommandEvent& WXUNUSED(event)) { std::string Passwort; //ZEILE 33 Passwort = textCtrl->GetValue(); Close(true); }
Sogesehen ist auch der Fehler anders (Namen halt...)
-
Hallo,
Das ist ganz logisch: Du deklarierst die Button-Variable im Konstruktor. Wenn der Verlassen wird, verliert auch automatisch die Variable seine Gültigkeit. Du musst also den Button als Klassenvariable deklarieren, dann gehts auch:
class Simple : public wxFrame { public: Simple(const wxString& title); void identifizieren(wxCommandEvent& WXUNUSED(event)); private: DECLARE_EVENT_TABLE() wxButton *Button; }; Simple::Simple(const wxString& title) : wxFrame(NULL, wxID_ANY, title, wxDefaultPosition, wxSize(250, 90)) { wxWindow *parent; wxTextCtrl* textCtrl = new wxTextCtrl(parent, 1004, wxEmptyString, wxDefaultPosition, wxSize(235, 25), wxTE_PASSWORD); Button = new wxButton(parent, 1005, _T("&Identifizieren"), wxPoint(0,30), wxDefaultSize); }
-
Danke
Logisches Denken...Habe dazu noch bemerkt, dass ich es irgendwie anders in std::string umwandeln muss. Ich habe jetzt erstmal
wxString Passwort;
Passwort = textCtrl->GetValue();
genommen
Danke schön