wxWidget simples Programm. Aber Problem mit Grundlagen.



  • Hallo ich habe:
    - VC++ 08 Express
    - wxPack.

    Verzeichnisse eingebunden.

    Code aus einem Buch nachgetippt:

    --------------------------------------------------------------------------
    base.h
    -----
    #ifndef BASE_H
    #define BASE_H

    class HalloWeltApp : public wxApp {
    public: virtual bool OnInit();
    };

    class BasicFrame : public wxFrame {
    public:
    BasicFrame( const wxChar* title,
    int xpos, int ypos,
    int width, int height);
    ~BasicFrame();
    };

    #endif
    --------------------------------------------------------------------------
    base.cpp
    -----
    #include <wx\wx.h>
    #include "base.h"

    IMPLEMENT_APP( HalloWeltApp )

    class HalloWeltApp::OnInit() {
    BasicFrame* frame =
    new BasicFrame ( wxT("Hallo Welt"), 50, 50, 450, 300);
    frame->Show(TRUE);
    SetTopWindow(frame);
    return TRUE;
    }

    class BasicFrame::BasicFrame (
    const wxChar* title,
    int xpos, int ypos,
    int width, int height)
    : wxFrame ( (wxFrame 😉 NULL,
    -1, title,
    wxPoint(xpos, ypos),
    wxSize(width, height)) {
    }

    class BasicFrame::~BasicFrame() {
    }
    --------------------------------------------------------------------------

    Fehlermeldung:

    1>------ Erstellen gestartet: Projekt: Dragon VC08, Konfiguration: Debug Win32 ------
    1>Kompilieren...
    1>base.cpp
    1>c:\users\acer\documents\visual studio 2008\projects\dragon vc08\dragon vc08\base.cpp(6) : error C2039: 'OnInit': Ist kein Element von 'HalloWeltApp'

    1> c:\users\acer\documents\visual studio 2008\projects\dragon vc08\dragon vc08\base.h(4): Siehe Deklaration von 'HalloWeltApp'

    1>c:\users\acer\documents\visual studio 2008\projects\dragon vc08\dragon vc08\base.cpp(10) : error C3861: "SetTopWindow": Bezeichner wurde nicht gefunden.

    1>c:\users\acer\documents\visual studio 2008\projects\dragon vc08\dragon vc08\base.cpp(11) : error C2664: 'HalloWeltApp::HalloWeltApp(const HalloWeltApp &)': Konvertierung des Parameters 1 von 'int' in 'const HalloWeltApp &' nicht möglich

    1> Ursache: Konvertierung von 'int' in 'const HalloWeltApp' nicht möglich

    1> Quelltyp konnte von keinem Konstruktor angenommen werden, oder die Überladungsauflösung des Konstruktors ist mehrdeutig

    1>c:\users\acer\documents\visual studio 2008\projects\dragon vc08\dragon vc08\base.cpp(14) : error C2039: '{ctor}': Ist kein Element von 'BasicFrame'

    1> c:\users\acer\documents\visual studio 2008\projects\dragon vc08\dragon vc08\base.h(8): Siehe Deklaration von 'BasicFrame'

    1>c:\users\acer\documents\visual studio 2008\projects\dragon vc08\dragon vc08\base.cpp(21) : error C2550: 'BasicFrame': Initialisierungslisten für Konstruktoren dürfen nur in Konstruktordefinition stehen

    1>c:\users\acer\documents\visual studio 2008\projects\dragon vc08\dragon vc08\base.cpp(24) : error C2039: '{dtor}': Ist kein Element von 'BasicFrame'

    1> c:\users\acer\documents\visual studio 2008\projects\dragon vc08\dragon vc08\base.h(8): Siehe Deklaration von 'BasicFrame'

    1>Das Buildprotokoll wurde unter "file://c:\Users\acer\Documents\Visual Studio 2008\Projects\Dragon VC08\Dragon VC08\Debug\BuildLog.htm" gespeichert.

    1>Dragon VC08 - 6 Fehler, 0 Warnung(en)
    ========== Erstellen: 0 erfolgreich, Fehler bei 1, 0 aktuell, 0 übersprungen ==========



  • In der .cpp muss das class weg vor den Funktionsrümpfen und der Rückgabetyp hin.
    Dein Buch sollte dir erstmal eher C++ beibringen als wxWidgets...

    #include <wx\wx.h>
    #include "base.h"
    
    IMPLEMENT_APP( HalloWeltApp )
    
    bool HalloWeltApp::OnInit() 
    {
    BasicFrame* frame =
    new BasicFrame ( wxT("Hallo Welt"), 50, 50, 450, 300);
    frame->Show(TRUE);
    SetTopWindow(frame);
    return true;
    }
    
    BasicFrame::BasicFrame (const wxChar* title,int xpos, int ypos, int width, int height)
    : wxFrame ( (wxFrame *) NULL,
    -1, title,
    wxPoint(xpos, ypos),
    wxSize(width, height)) 
    {
    }
    
    BasicFrame::~BasicFrame() 
    {
    }
    


  • Danke. Nu gehts.

    Da sieht man das ich die Sprache noch nicht so gut beherrsche.

    War ein tippfehler.
    Das seh ich sogar selber ein.


Anmelden zum Antworten