2009-06-05 70 views
3

我想添加一個命令行界面到我的MFC應用程序,以便我可以提供命令行參數。這些參數將配置應用程序的啓動方式。接口MFC和命令行

但是,我無法弄清楚如何連接這兩個。如果甚至有可能,我怎麼能這樣做呢?

回答

8

MFC有一個CCommandLineInfo類來做到這一點 - 請參閱CCommandLineInfo文檔。

+0

謝謝!就是我在找的東西! – samoz 2009-06-05 12:18:59

2

這裏是我如何做到這一點的MFC應用程序:

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

非常好的解決方案! 另外,歡迎來到堆棧溢出! – samoz 2009-06-11 17:26:43

0

的CCommandLineInfo東西實在是乏味的使用。按照增加的膨脹順序,我推薦使用TCALP(模板化C++命令行解析器http://tclap.sourceforge.net/manual.html)或boost program_options(http://www.boost.org/doc/libs/1_48_0/doc/html/program_options.html)。您還可以在其他非MFC C++應用程序甚至其他操作系統中使用這些庫。 TCLAP可以配置爲支持Windows風格的參數,即以「/」開頭而不是以「 - 」開頭的POSIX(http://tclap.sourceforge.net/manual.html#CHANGING_STARTSTRINGS