【发布时间】:2014-11-11 08:56:11
【问题描述】:
我正在调试我的应用程序的发布版本,并确定ProcessShellCommand 发生异常。这是相关代码。
ParseCommandLine(m_cmdInfo);
CString strDebug;
strDebug.Format(_T("%d"),m_cmdInfo.m_nShellCommand);
AfxMessageBox(strDebug);
if (!ProcessShellCommand(m_cmdInfo)) {
return FALSE;
}
AfxMessageBox(_T("Done"));
第一个消息框成功出现,但第二个没有。因此,显然发生的异常必须发生在ProcessShellCommand()。但是,如您所见,第一个消息框应该显示 shell 命令,但它显示为空!所以我不明白ProcessShellCommand()到底在做什么。
谁能提供一些见解和/或建议?谢谢。
m_cmdInfo的调试:http://i61.tinypic.com/mjbthh.jpg
【问题讨论】:
-
AfxMessageBox需要一个字符串,但m_nShellCommand是一个enum(然后是一个整数)。使用整数AfxMessageBox将尝试将其用作资源ID... -
如果您的程序崩溃,请始终在调试器中运行,它可能不会在您期望它崩溃的地方崩溃。比如,谁说关闭消息框时崩溃的不是
AfxMessageBox函数? -
@AdrianoRepetti 谢谢,我已经改变了上面的代码,现在在弹出窗口中得到 0。不知道那是什么意思..
-
来自MSDN。它是
FileNew,它的意思是:“CCommandLineInfo::FileNew 表示在命令行上没有找到文件名。” -
@AdrianoRepetti 对不起,我确实在这里看到了:msdn.microsoft.com/en-us/library/84dxkf0w.aspx,不知道从中得到什么...这是否意味着它没有得到我试图正常运行的文件?
标签: c++ visual-studio mfc