不妨假设应用程序名为CmdTest,在命令行输入CmdTest Hello World
方法一:
-
CString str = ::GetCommandLine();
-
ASSERT(0 == str.Compare("CmdTest Hello World"));
方法二:
-
ASSERT(3 == __argc);
-
ASSERT(0 == strcmp(__argv[0],"CmdTest"));
-
ASSERT(0 == strcmp(__argv[1],"Hello"));
-
ASSERT(0 == strcmp(__argv[2],"World"));
方法三:
-
ASSERT(0 == strcmp("Hello World",AfxGetApp()->m_lpCmdLine));
方法四:
使用MFC中的CCommandLineInfo类。
首先,将下面的代码注释,主要是不要生成对话框。
-
CCmdTestDlg dlg;
-
m_pMainWnd = &dlg;
-
int nResponse = dlg.DoModal();
-
if (nResponse == IDOK)
-
{
-
-
-
}
-
else if (nResponse == IDCANCEL)
-
{
-
-
-
}
创建CCommandLineInfo的派生类
-
-
class CMyCmdLineInfo : public CCommandLineInfo
-
{
-
public:
-
CMyCmdLineInfo();
-
virtual ~CMyCmdLineInfo();
-
-
virtual void ParseParam(const char* pszParam, BOOL bFlag, BOOL bLast);
-
-
CStringArray m_arCommd;
-
};
-
-
-
CMyCmdLineInfo::CMyCmdLineInfo()
-
{
-
m_arCommd.RemoveAll();
-
}
-
-
CMyCmdLineInfo::~CMyCmdLineInfo()
-
{
-
-
}
-
-
void CMyCmdLineInfo::ParseParam(const char* pszParam, BOOL bFlag, BOOL bLast)
-
{
-
CString str = pszParam;
-
m_arCommd.Add(str);
-
}
在CCmdTestApp::InitInstance最后,return FALSE之前加上,注意要#include对应头文件
-
CMyCmdLineInfo cmdInfo;
-
cmdInfo.m_nShellCommand = CCommandLineInfo::FileNothing;
-
ParseCommandLine(cmdInfo);
-
-
ASSERT(2 == cmdInfo.m_arCommd.GetSize());
-
ASSERT(0 == cmdInfo.m_arCommd[0].Compare("Hello"));
-
ASSERT(0 == cmdInfo.m_arCommd[1].Compare("World"));
MFC中获取命令行参数的几种方法
原文:http://blog.csdn.net/jiangqin115/article/details/45177549