MFC SDI应用程序解析自定义参数

时间:2015-05-20 19:53:59

标签: c++ mfc

我在Visual Studio中建立了一个SDI应用程序。我知道将文件名传递给应用程序就像在命令行中一样:MyApp.exe "C:\a.txt"。但是它不接受自定义参数或URL。假设我无法MyApp.exe "SomethingILike"MyApp.exe "www.google.com"

我理解处理参数的代码在...App::InitInstance()

CCommandLineInfo cmdInfo;
ParseCommandLine(cmdInfo);

if (!ProcessShellCommand(cmdInfo))
    return FALSE;
m_pMainWnd->ShowWindow(SW_SHOW);
m_pMainWnd->UpdateWindow();

显然ProcessShellCommand排除了MFC不合理的论点。我应该如何处理我的自定义参数?说我想传递" SomethingILike",现在它告诉我文件未找到并关闭,但至少我希望应用程序正常启动,我将有机会获得

this->m_lpCmdLine

我无法注释掉ProcessShellCommand if语句,否则它会给我一个未处理的异常。可能ProcessShellCommand也做了一些初始化工作,这对我来说听起来不太合理。

1 个答案:

答案 0 :(得分:1)

您必须从CCommandLineInfo派生一个类并覆盖其虚函数ParseParam()以定义您自己的参数处理。

这里有demo如何做到这一点。