Взаимодействие MFC и командной строки - PullRequest
3 голосов
/ 05 июня 2009

Я хотел бы добавить интерфейс командной строки в мое приложение MFC, чтобы я мог предоставить параметры командной строки. Эти параметры будут настраивать способ запуска приложения.

Однако я не могу понять, как связать эти два. Как я могу это сделать, если это вообще возможно?

Ответы [ 3 ]

8 голосов
/ 05 июня 2009

MFC имеет класс CCommandLineInfo для этого - см. Документацию CCommandLineInfo .

2 голосов
/ 11 июня 2009

Вот как я это делаю в приложениях 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 голосов
/ 18 декабря 2011

Использование CCommandLineInfo действительно утомительно. В порядке возрастания раздувания я рекомендую использовать TCALP (Templatized C ++ Parser Command Line 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)

...