连接MFC和命令行

时间:2009-06-05 12:14:52

标签: c++ command-line mfc

我想在我的MFC应用程序中添加一个命令行界面,以便我可以提供命令行参数。这些参数将配置应用程序的启动方式。

然而,我无法弄清楚如何将这两者联系起来。如果可能的话,我怎么能这样做呢?

3 个答案:

答案 0 :(得分:8)

MFC有一个CCommandLineInfo类来执行此操作 - 请参阅CCommandLineInfo文档。

答案 1 :(得分: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

答案 2 :(得分:0)

CCommandLineInfo的内容非常繁琐。随着膨胀的增加,我建议使用TCALP(模板化C ++命令行解析器http://tclap.sourceforge.net/manual.html)或提升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