如何在MFC应用程序中获取命令行参数?

时间:2011-04-06 07:32:55

标签: visual-c++ mfc

我希望有一个基于对话框的小应用程序,它传递了命令行参数,因此,使用VC ++ 6我运行了应用程序向导并选择了一个MFC对话框应用程序。

这不会自动配备命令行参数。所以我走了 到MSDN来刷新我的内存。 MSDN声明所有C ++程序 有一个main()或一个wmain()函数和argc等参数 到这里。我刚创建的应用程序没有这些。

因为显然有一个函数是应用程序的入口点,所以可以 我坚持这里的论点?我确实试过这个,但我不相信我 实际上正在编辑正确的功能。 (我能找到哪个功能 作为项目设置中的main()函数或类似函数?)

基本上,我如何让我的程序读取命令行参数。

另外作为副业。对于一个简单的程序,这是,我真的没有 想要使它成为一个MFC应用程序,从而超过MB的大小。是否有应用程序向导模板库允许我创建非MFC对话框 应用

5 个答案:

答案 0 :(得分:32)

使用 GetCommandLine(),它返回正在执行的文件的名称, 其次是争论。

应用程序成员 m_lpCmdLine (像yourApp.m_lpCmdLine一样使用)仅包含参数。

您可能会发现CWinApp::ParseCommandLine()有用。

还可以尝试使用ATL COM向导创建非MFC对话框应用程序(选择.exe选项,而不是.dll)。

答案 1 :(得分:5)

是的,请参阅CWinApp:ParseCommandLine。另请查看CCommandLineInfo类。

答案 2 :(得分:2)

在MFC应用程序中,入口点功能是' initInstance()',如main()wmain()。使用CWinApp::m_lpCmdLine中的initInstance()访问命令行。

答案 3 :(得分:1)

要获取原始命令行,请使用以下代码(将在任何Win32 / MFC应用程序上运行):

TCHAR *pCommandLine = ::[GetCommandLine()][1];
int nArgc = 0;
LPWSTR *pArgv = ::CommandLineToArgvW(pCommandLine, &nArgc);

如果未提供任何参数,则nArgc应该为1,如果存在则大于1。然后,pArgv 1将是第一个参数,依此类推...

答案 4 :(得分:-2)

"是否有应用程序向导模板库可以让我创建非MFC对话框应用程序?"

您可以使用" Win32项目制作非MFC应用程序"新项目中的选项 - > Visual C ++ - >的Win32。

或者只是使用C#,到目前为止更容易。