wxWidgets - Hello World auf Konsole



  • Hey kennt sich hier jemand mit wxWidgets aus? Ich probiere es gerade aus da mir es ein Freund empfohlen hat, da man damit angeblich am besten Systemunabhängig programmieren kann. Allerdings habe ich jetzt schon bei einem einfachen Konsolenprogramm Probleme 😞

    Ich habe ein neues wxWidgetprojekt erstellt und wollte mich erstmal an etwas Einfachem probieren: Hello World.
    Die erste Sache zu der ich nicht in der Lage war war es einen Debugger mit einzubinden, ich musst die Debugmöglichkeit deaktivieren da sonst das Projekt nciht gestartet werden kann (das scheint aber auch laut Tutorial normal zu sein).
    Nun aber zum eigentlichen Problem: Ich kann das Projekt compilieren, allerdings wird lediglich das system("PAUSE") anscheinend ausgeführt, bzw das cout komplett übersprungen. Auch der Test ob mehrere PAUSE in einem Fenster angezeigt werden ist fehlgeschlagen, anscheinend ist die Konsole nur in der Lage eine Textzeile anzuzeigen, danach wird die alte geschlossen und eine neue geöffnet. Ich bentuze Code::Blocks als IDE und den GNU Compiler. Kennt jemand den Fehler?

    #ifndef MAIN_H_INCLUDED
    #define MAIN_H_INCLUDED
    
    #include <iostream>
    #include "wx/wx.h"
    
    int main()
    {
        std::cout << "Hello World" << std::endl;
        system("PAUSE");
    }
    
    #endif // MAIN_H_INCLUDED
    


  • Jud4s schrieb:

    Hey kennt sich hier jemand mit wxWidgets aus?

    Ja, die Leute im wxWidgets-Forum.
    Bitte demnächst vor dem Posten ein wenig umschauen und überlegen, wo die jeweilige Frage am besten aufgehoben ist 🙂



  • 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.



  • Also zu aller erstmal, wxWidget ist eine Bibliothek um Programme mit Fenster Plattformunabhängig zu programmieren.

    Für die Console brauchst du kein wxWidget!!!

    Ich frag mich grad nur was das hier soll:

    #ifndef MAIN_H_INCLUDED
    #define MAIN_H_INCLUDED
    

    Solche einträge wären nur in einer *.h- oder *.hpp-Datei zu finden. Und darin hat eine main()-Funktion nichts zu suchen.

    Und zur einfachheit würde ich sagen lass dir von CodeBlocks erstmal ein "Console application"-Projekt erstellen, mit dem
    kannst du erstmal rein auf der Console arbeiten und es gibt dir dann auch gleich ein kleines Compalierbares Beispiel für
    Hello World.

    Solltest du dann soweit sein gibt hier auch noch einen Artikel für wxWidget: [url=http://www.c-plusplus.net/forum/viewtopic-var-t-is-159232.html]wxWidget[url]

    Mfg marco



  • Also dass man wxWidgets nicht für die Konsole braucht stimmt so schonmal nicht. Es ist eine sehr gute Library dafür. Gerade wxString oder wxCommandLineParser sind geile Tools um schnell was aus dem Boden zu stampfen.

    Aber um die Frage zu beantworten:

    int main(int argc, char **argv)
        {
            wxApp::CheckBuildOptions(WX_BUILD_OPTIONS_SIGNATURE, "program");
    
            wxInitializer initializer;
            if ( !initializer )
            {
                fprintf(stderr, "Failed to initialize the wxWidgets library, aborting.");
                return -1;
            }
    
            static const wxCmdLineEntryDesc cmdLineDesc[] =
            {
                { wxCMD_LINE_SWITCH, "h", "help", "show this help message",
                    wxCMD_LINE_VAL_NONE, wxCMD_LINE_OPTION_HELP },
                // ... your other command line options here...
    
                { wxCMD_LINE_NONE }
            };
    
            wxCmdLineParser parser(cmdLineDesc, argc, wxArgv);
            switch ( parser.Parse() )
            {
                case -1:
                    wxLogMessage(_T("Help was given, terminating."));
                    break;
    
                case 0:
                    // everything is ok; proceed
                    break;
    
                default:
                    wxLogMessage(_T("Syntax error detected, aborting."));
                    break;
            }
    
            // do something useful here
    
            return 0;
        }
    

    HTH
    rya.


Anmelden zum Antworten