MFC中命令行参数处理办法

转自:http://blog.csdn.net/bao_qibiao/archive/2009/09/07/4528860.aspx

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

下面转载自 http://www.qingfengju.com/article.asp?id=92

http://blog.csdn.net/geeeeeeee/archive/2008/12/13/3510195.aspx

在MFC程序中,可以用以下几种方法来获取命令行参数。
为方便说明,我们假设执行了命令:C:/test/app.exe -1 -2

方法一
::GetCommandLine ();
将获取到 "C:/test/app.exe" -1 -2

方法二
for (int i=0;i<__argc ;i++)
{
__argv [i];
将依次得到C:/test/app.exe -1 -2
}

方法三
AfxGetApp ()->m_lpCmdLine;
将获取到 -1 -2

二。MFC中处理命令行的类

类CCommandLineInfo用于分析启动应用时的命令行参数。MFC应用一般都会在它的应用对象中使用函数InitInstance创建这个类的一个本地实例。然后把该对象传给CWinApp::ParseCommandLine,ParseCommandLine又重复调用 ParseParam填充CCommandLineInfo对象。最后,CCommandLineInfo对象被传给 CWinApp::ProcessShellCommand来处理命令行参数和选项。

view plaincopy to clipboardprint?
1. BOOL CExampleApp::InitInstance()
2. {
3. ...
4. // 分析标准外壳命令、DDE、打开文件操作的命令行
5. CCommandLineInfo cmdInfo;
6. ParseCommandLine(cmdInfo);
7.
8.
9. // 调度在命令行中指定的命令。如果
10. // 用 /RegServer、/Register、/Unregserver 或 /Unregister 启动应用程序,则返回 FALSE。
11. if (!ProcessShellCommand(cmdInfo))
12. return FALSE;
13. ...
14. }
15.
16.
17. void CWinApp::ParseCommandLine(CCommandLineInfo& rCmdInfo)
18. {
19. for (int i = 1; i < __argc; i++)
20. {
21. LPCTSTR pszParam = __targv[i];
22. BOOL bFlag = FALSE;
23. BOOL bLast = ((i + 1) == __argc);
24. if (pszParam[0] == '-' || pszParam[0] == '/')
25. {
26. // remove flag specifier
27. bFlag = TRUE;
28. ++pszParam;
29. }
30. rCmdInfo.ParseParam(pszParam, bFlag, bLast);
31. }
32. }

延伸:继承CCommandLineInfo类的例子 http://blog.csdn.net/birdme007/archive/2007/04/11/1560420.aspx

这篇文章用代码分析了CCommandLineInfo http://blog.csdn.net/wangandy7811/archive/2008/12/31/3663447.aspx

三.用vc++调试带命令行的程序


在project--> setting-->debug-->Program arguments:输入你所带的参数。

Powered by Zoundry Raven

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值