2009-06-05 11 views
3

Ich möchte eine Befehlszeilenschnittstelle zu meiner MFC-Anwendung hinzufügen, so dass ich Befehlszeilenparameter bereitstellen konnte. Diese Parameter würden konfigurieren, wie die Anwendung gestartet wurde.Schnittstelle MFC und Befehlszeile

Allerdings kann ich nicht herausfinden, wie man diese beiden verbindet. Wie könnte ich das machen, wenn es überhaupt möglich ist?

Antwort

8

MFC verfügt über eine CCommandLineInfo-Klasse, um genau das zu tun - siehe Dokumentation CCommandLineInfo.

+0

Vielen Dank! Genau das, was ich gesucht habe! – samoz

2

Hier ist, wie ich es in MFC-Anwendungen:

int option1_value; 
BOOL option2_value; 

if (m_lpCmdLine[0] != '\0') 
{ 
    // parse each command line token 
    char seps[] = " "; // spaces 
    char *token; 
    char *p; 
    token = strtok(m_lpCmdLine, seps); // establish first token    
    while (token != NULL) 
    { 
      // check the option 
      do // block to break out of   
      { 
       if ((p = strstr(strupr(token),"/OPTION1:")) != NULL) 
       { 
        sscanf(p + 9,"%d", &option1_value); 
        break; 
       } 

       if ((p = strstr(strupr(token),"/OPTION2")) != NULL) 
       { 
        option2_value = TRUE; 
        break; 
       } 
      } 
      while(0); 

      token = strtok(NULL, seps);  // get next token   
    } 
} // end command line not empty 
+0

Sehr schöne Lösung! Willkommen zu Stack Overflow! – samoz

0

Die CCommandLineInfo Sachen zu verwenden, wirklich langweilig ist. In ansteigender Reihenfolge von Bloat empfehle ich TCALP (Templatized C++ Befehlszeilenparser http://tclap.sourceforge.net/manual.html) oder boost Programmoptionen (http://www.boost.org/doc/libs/1_48_0/doc/html/program_options.html) Sie können diese Bibliotheken auch in anderen nicht MFC C++ - Anwendungen und sogar auf anderen Betriebssystemen verwenden. TCLAP kann so konfiguriert werden, dass Windows-artige Parameter unterstützt werden, d. H. Beginnend mit einem "/" anstelle von POSIX, beginnend mit "-" (http://tclap.sourceforge.net/manual.html#CHANGING_STARTSTRINGS)