2012-04-12 20 views
4

Gibt es eine Möglichkeit, die Befehlszeilenargumente zu lesen, die in einer C++ - Anwendung wxWidgets übergeben werden? Wenn ja, könnten Sie bitte ein Beispiel dafür geben.Befehlszeilenargumente in WxWidgets

+0

Ihre Hauptfunktion hat zwei Argumente, normalerweise Argc und Argv. Dies sind die Befehlszeilenargumente, die an Ihre Anwendung übergeben werden und die Sie an wxWidgets übergeben. Überprüfen Sie diese Argumente einfach selbst, wenn Sie es brauchen. –

+0

@JoachimPileborg: Ich bin mir nicht sicher, ob Sie mit der Initialisierung von wxWidgets-Programmen vertraut sind, sie verwenden jedoch normalerweise wxFrame- und wxApplication-Fenster, und Sie haben nicht einfach Zugriff auf diese beiden Variablen. – jack

+0

Wenn es keine Methoden in der Anwendungsklasse gibt, um die Parameter zu erhalten, müssen Sie vielleicht das Makro 'IMPLEMENT_APP' neu implementieren, um die Argumente von dort zu bekommen. –

Antwort

2

Werfen Sie einen Blick auf diese Beispiele (1, 2) oder:

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; 
    } 
    return 0; 
} 
5

In Plain C++ gibt es argc und argv. Wenn Sie eine wxWidgets-Anwendung erstellen, können Sie auf diese zugreifen, indem Sie wxApp::argc, wxApp::argv[] oder wxAppConsole::argc, wxAppConsole::argv[] verwenden. Beachten Sie, dass wxApp von wxAppConsole abgeleitet ist. Dies funktioniert je nachdem, ob Sie eine Konsolenanwendung oder eine GUI-App verwenden. Siehe wxAppConsole

IMPLEMENT_APP(MyApp) 

bool MyApp::OnInit() { 
// Access command line arguments with wxApp::argc, wxApp::argv[0], etc. 
// ... 
} 

Sie auch in wxCmdLineParser interessiert sein könnten.