您的位置:首页 > 其它

MFC中获取命令行参数的几种方法

2015-04-21 22:22 211 查看
不妨假设应用程序名为CmdTest,在命令行输入CmdTest Hello World

方法一:

[cpp] view
plaincopy

CString str = ::GetCommandLine();

ASSERT(0 == str.Compare("CmdTest Hello World"));

方法二:

[cpp] view
plaincopy

ASSERT(3 == __argc);

ASSERT(0 == strcmp(__argv[0],"CmdTest"));

ASSERT(0 == strcmp(__argv[1],"Hello"));

ASSERT(0 == strcmp(__argv[2],"World"));

方法三:

[c-sharp] view
plaincopy

ASSERT(0 == strcmp("Hello World",AfxGetApp()->m_lpCmdLine));

方法四:

使用MFC中的CCommandLineInfo类。

首先,将下面的代码注释,主要是不要生成对话框。

[cpp] view
plaincopy

CCmdTestDlg dlg;

m_pMainWnd = &dlg;

int nResponse = dlg.DoModal();

if (nResponse == IDOK)

{

// TODO: Place code here to handle when the dialog is

// dismissed with OK

}

else if (nResponse == IDCANCEL)

{

// TODO: Place code here to handle when the dialog is

// dismissed with OK

}

创建CCommandLineInfo的派生类

[cpp] view
plaincopy

//MyCmdLineInfo.h

class CMyCmdLineInfo : public CCommandLineInfo

{

public:

CMyCmdLineInfo();

virtual ~CMyCmdLineInfo();



virtual void ParseParam(const char* pszParam, BOOL bFlag, BOOL bLast);



CStringArray m_arCommd;

};



//MyCmdLineInfo.cpp

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对应头文件

[cpp] view
plaincopy

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"));
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: