ID_TEXTCTRL was not declared in this scope



  • Hi
    also ich bekomme in meinem Code folgende Fehlermeldung:
    ID_TEXTCTRL was not declared in this scope
    wie kann das sein? Falls ihr den Code braucht:

    #ifndef FRAME_H_INCLUDED
    #define FRAME_H_INCLUDED
    #include <wx/wx.h>
    class App : public wxApp {
        public: virtual bool OnInit();
    };
    
    class Frame : public wxFrame {
        private:
        wxPanel *panel;
        wxButton *B_ok;
        wxStatusBar *statusbar;
        wxTextCtrl *txtctrl;
    
        DECLARE_EVENT_TABLE()
        public:
        Frame(wxChar *title,
              int xpos, int ypos,
              int xsize, int ysize);
        ~Frame();
    
        void OnClickButtonOK(wxCommandEvent& event);
        void EnterTxtCtrl(wxCommandEvent& event);
    };
    
    #endif // FRAME_H_INCLUDED
    
    #include "Frame.h"
    
    IMPLEMENT_APP(App)
    
    BEGIN_EVENT_TABLE(Frame, wxFrame)
        EVT_BUTTON(wxID_OK, Frame::OnClickButtonOK)
        EVT_TEXT_ENTER(ID_TEXTCTRL, Frame::EnterTxtCtrl)
    END_EVENT_TABLE()
    
    bool App::OnInit(){
        Frame *f = new Frame(wxT("TEST"),50,50,400,400);
        f->Show(true);
        SetTopWindow(f);
        return true;
    }
    
    Frame::Frame(wxChar *title,
                 int xpos, int ypos,
                 int xsize, int ysize)
                    : wxFrame(NULL, -1,
                              title,
                              wxPoint(xpos,ypos),
                              wxSize(xsize,ysize)) {
    
        panel = new wxPanel(this, wxID_ANY);
        B_ok = new wxButton(panel, wxID_OK, wxT("OK"), wxPoint(20,20), wxSize(50,50));
        statusbar = CreateStatusBar(1, 0, -1, wxT("Statusbar"));
        txtctrl = new wxTextCtrl(this, ID_TEXTCTRL, wxT("Text eingeben"), wxPoint(100,20), wxSize(200,30), wxTE_PROCESS_ENTER);
    
        }
    
    Frame::~Frame(){}
    
    void Frame::OnClickButtonOK(wxCommandEvent& event){
        Destroy();
    }
    void Frame::EnterTxtCtrl(wxCommandEvent& event){
        wxString s = txtctrl->GetLineText(0);
    }
    


  • Indem es nirgends definiert ist? - Ich seh in dem Code nicht, was das sein soll.



  • Ja das ist doch einfach die ID meines wxTextCtrl Elements!!

    #include "Frame.h"
    
    IMPLEMENT_APP(App)
    
    BEGIN_EVENT_TABLE(Frame, wxFrame)
        EVT_BUTTON(wxID_OK, Frame::OnClickButtonOK)
        EVT_TEXT_ENTER(ID_TEXTCTRL, Frame::EnterTxtCtrl)     <------
    END_EVENT_TABLE()
    
    bool App::OnInit(){
        Frame *f = new Frame(wxT("TEST"),50,50,400,400);
        f->Show(true);
        SetTopWindow(f);
        return true;
    }
    
    Frame::Frame(wxChar *title,
                 int xpos, int ypos,
                 int xsize, int ysize)
                    : wxFrame(NULL, -1,
                              title,
                              wxPoint(xpos,ypos),
                              wxSize(xsize,ysize)) {
    
        panel = new wxPanel(this, wxID_ANY);
        B_ok = new wxButton(panel, wxID_OK, wxT("OK"), wxPoint(20,20), wxSize(50,50));
        statusbar = CreateStatusBar(1, 0, -1, wxT("Statusbar"));
        txtctrl = new wxTextCtrl(this, ID_TEXTCTRL, wxT("Text eingeben"), wxPoint(100,20), wxSize(200,30), wxTE_PROCESS_ENTER);     <-------------
    
        }
    
    Frame::~Frame(){}
    
    void Frame::OnClickButtonOK(wxCommandEvent& event){
        Destroy();
    }
    void Frame::EnterTxtCtrl(wxCommandEvent& event){
        wxString s = txtctrl->GetLineText(0);
    }
    

    Ich muss das doch nicht definieren oder?



  • Dieser Thread wurde von Moderator/in pumuckl aus dem Forum C++ in das Forum Andere GUIs - Qt, GTK+, wxWidgets verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.


  • Mod

    wxNewb schrieb:

    Ja das ist doch einfach die ID meines wxTextCtrl Elements!!
    ...
    Ich muss das doch nicht definieren oder?

    Doch, genau dass musst du.



  • und wie macht man das? Also bei wxID_OK hab ich das auch nicht gemacht glaub ich!..


  • Mod

    wxNewb schrieb:

    und wie macht man das? Also bei wxID_OK hab ich das auch nicht gemacht glaub ich!..

    Das wird ja auch von wxWidgets deklariert.
    Wie du das machst, da gibt es verschiedene Wege, du brauchst letztenendes eine Konstante.
    Ein const int ID_TEXTCTRL = wxNewId(); sollte es im Header tun.


Log in to reply