wxWidgets Anfängerfragen: Wohin mit dem eigenen Programmcode?



  • Hallo,

    ich bin rein zufällig über wxWidgets gestolpert. das ist eine feine Sache. Allerdings: Im Gegensatz zu den VisualStudio-Lösungen von M$, gibt es ausschließlich englische Dokumentationen. Und bevor hier die üblichen weisen Ratschläge kommen:
    -Ich habe das Tutorial durchgearbeitet (welches übrigens ohne IMPLEMENT_APP() auskommt)-> http://www.wxwidgets.org/docs/tutorials/hello.htm
    -Ich habe auch die Artikel im Magazin gelesen.

    Hilfreiche Bemerkungen wie "Dann lies dir die Dokumentation XYZ durch" sind oft auch wenig sinnvoll, da dies im Regelfall geschehen ist. Wenn keine Fragen offen geblieben wären, gäbe es keine Forumsbeiträge... 😉

    Rahmenbedingungen: Ich verwende wxDev C++, welches komplett mit integrierten wxWidgets downloadbar ist und einen grafischen Formdesigner beinhaltet. Dieser ist nicht ganz so komfortabel wie sein VS-Pendant, aber er funktioniert mit Einarbeitung. Das Hello World-Programm habe ich erfolgreich erstellt.

    Meine Fragen:
    -Wenn man ein neues Projekt erstellt und dabei wxFrame-Projekt wählt, legt die IDE 6 Dateien an (Das Projekt heißt angenommenermaßen TestApp)
    -TestAppApp.cpp
    -TestAppApp.h
    -TestAppApp.rc
    -TestAppFrm.h
    -TestAppFrm.cpp
    -TestAppFrm.wxform
    Anhand der Endung ist leicht erkennbar, um wass es sich handelt. Trotzdem stehe ich gerade da wie der Ochse vorm Berg.
    Heiß es nicht, dass jedes C++ Programm eine Funktion namens Main() hat? Wo ist sie? Zwar habe ich gelesen, dass diese über ein Macro namens IMPLEMENT_APP(TestAppFrmApp) generiert wird, aber wo schreibe ich meinen Programmcode hin?

    Danke Jens

    PS: Eventuell kann dies zu einem kleinen Tutoriel für die Verwendung von wxWidgets werden.



  • Ok, ich geb mir die Antwort selber:

    Beispielsweise schreibt man eine eigene Klasse 'MeineKlasse'. Am besten implementiert man 'MeineKlasse' in einer eigenen Datei MeineKalsse.cpp und die Prototypen dazu in MeineKlasse.h

    MeineKlasse wird dann in der Funktion

    bool TestAppFrmApp::OnInit()
    {
        TestAppFrm* frame = new TestAppFrm(NULL);
        SetTopWindow(frame);
        frame.Show();
        MeineKlasse Instanz = new MeineKlasse(Parameter1 , ...);  // <- Hier!
        return true;
    }
    

    instaziert.

    Die weiteren Methoden der eigenen Klasse werden z.B. in den Controllelementen aufgerufen, etwa Buttons etc.

    In diesem Sinne

    Jens

    P.S.: Mal sehen, wer den Fehler bemerkt....



  • Gibt im Magazin 2 Artikel dazu.


  • Mod

    Hoffe du erzeugst nicht wirklich in einer Funktion lokale Variablen mit new ohne sie wieder freizugeben.
    Ansonsten, ja im Magazin stehen dazu 2 gute Artikel...



  • phlox81 schrieb:

    Hoffe du erzeugst nicht wirklich in einer Funktion lokale Variablen mit new ohne sie wieder freizugeben.
    Ansonsten, ja im Magazin stehen dazu 2 gute Artikel...

    That's it. Wenn ich die Instanz lokal erzeug, ist sie natürlich nach Verlassen der Funktion wieder weg! Habe die zwei Artikel gelesen und hatte erst so meine Probleme damit. Später ist mir dann wieder eingefallen, dass es in c' genauso läuft. Die Instanz wird GLOBAL erzeugt und die Memberfunktionen natürlich lokal in den Funktionen von Buttons etc. aufgerufen.

    Wie sagt man so schön: Ich sah den Wald vor lauter Bäumen nicht.....

    übrigens: In meinem Eigangsposting schrieb ich: Ich habe die 2 Artikel im Magazin gelesen.....

    Danke


Anmelden zum Antworten