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_Hclass 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 ( (wxFrameNULL,
-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.