Как получить аргументы командной строки в приложениях MFC?
Я хочу иметь небольшое диалоговое приложение, в которое передаются параметры командной строки, поэтому, используя V C++ 6, я запустил мастер приложений и выбрал диалоговое приложение MFC.
Это не оснащается автоматически параметрами командной строки. Поэтому я пошел
на MSDN, чтобы обновить мою память на них. MSDN заявляет, что все программы C++
иметь функцию main() или wmain() и аргументы argc и т.д.
иди сюда. В только что созданном приложении их нет.
Поскольку, очевидно, есть функция, которая является точкой входа в приложение,
Я придерживаюсь аргументов здесь? Я попробовал это, но я не уверен, что я
на самом деле редактировал правильную функцию. (Могу ли я найти функцию, которая
выступает в качестве функции main() в настройках проекта или аналогичных?)
В основном, как заставить мою программу читать параметры командной строки.
Также как побочная линия. Для простой программы, которая это, я действительно не
хочу сделать его приложением MFC, и, следовательно, размером более МБ. Существуют ли библиотеки шаблонов приложений, которые позволят мне сделать диалог без MFC
применение?
Ответы
Ответ 1
Используйте GetCommandLine(), которая возвращает имя исполняемого файла,
следуют аргументы.
Член приложения m_lpCmdLine (используется как yourApp.m_lpCmdLine
) содержит только аргументы.
Существует также CWinApp :: ParseCommandLine(), который может оказаться полезным.
Также попробуйте мастер ATL COM для создания диалогового приложения без MFC (выберите вариант .exe, а не .dll).
Ответ 2
Да, см. CWinApp: ParseCommandLine. Также рассмотрите класс CCommandLineInfo.
Ответ 3
В приложениях MFC функция точки входа - это initInstance(), например, main()
или wmain()
. Используйте CWinApp::m_lpCmdLine
в initInstance()
для доступа к командной строке.
Ответ 4
Чтобы получить необработанную командную строку, используйте следующий код (будет работать в любом приложении Win32/MFC):
TCHAR *pCommandLine = ::[GetCommandLine()][1];
int nArgc = 0;
LPWSTR *pArgv = ::CommandLineToArgvW(pCommandLine, &nArgc);
nArgc должно быть 1, если аргументы не заданы, и больше 1, если они есть. Тогда pArgv1 будет первым аргументом и так далее...
Ответ 5
"Существуют ли библиотеки шаблонов приложений и библиотеки приложений, которые позволят мне создать диалоговое приложение без MFC?"
Вы можете сделать приложение, отличное от MFC, с помощью опции "Win32 project" в новом проекте → Visual С++ → Win32.
Или просто используйте С#, это намного проще.