c++ - MFC - 扩展应用程序以从命令行运行

标签 c++ command-line mfc

我有一个现有的 MFC 应用程序,我正在尝试对其进行扩展以接受命令行参数并在无人值守的情况下运行。

我需要在 InitInstance() 完成并且现有 GUI 已完全加载后开始一些事件。我看过 winmain.cpp,但我不清楚如何运行我的事件,因为它似乎启动了一个线程并从调试器中“消失”(即接下来执行什么?一定是 MFC 循环,对吧?有可能进入那里吗?)我是新手,我完全有可能在更高层次上遗漏了一些洞察力,这不是那么容易用谷歌搜索的。感谢指点。

谢谢。

最佳答案

我会像往常一样在 InitInstance 中解析命令行,但不是立即处理你找到的所有命令,而是为你关心的(例如)发布消息的命令添加一些特殊处理返回到您自己的消息队列,这样当您准备好开始处理消息时,它们将显示为要做的第一件事。

为此,我可能CComandLineInfo 派生一个类,并覆盖 ParseParam 来处理您关心的命令(以及让它将它无法识别的任何其他参数发送回 CComandLineInfo::ParseParam 以正常处理)。然后,在 InitInstance 中,替换这段代码:

// Parse command line for standard shell commands, DDE, file open
CCommandLineInfo cmdInfo;
ParseCommandLine(cmdInfo);

使用自定义命令行解析器:

MyCommandLineInfo cmdInfo;
ParseCommandLine(cmdInfo);

ParseCommandLine 然后会为命令行上的每个参数调用您的 ParseParam,让您第一次有机会决定它的含义以及如何处理它。您可能想要查找 CComandLineInfo 已经理解的“标准”命令,并且不要管它们,除非您真的需要更改它们。

关于c++ - MFC - 扩展应用程序以从命令行运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4186759/

相关文章:

windows-7 - 为什么快捷方式调用的命令在Windows 7下的MFC中永远不会崩溃

c++ - 当基于 CDialog 的应用程序启动时,如何将我的辅助对话窗口置于顶部?

c++ - 关于二维绘图和绘画的任何好的教程?

java - 编程中的动态链接器是什么?

C++ 到 C 的转换

command-line - 有没有办法在 Windows Scripting Host (WSH) cscript.exe 中从 JScript(不是 javascript)运行命令行命令?

linux - 我可以阻止后续的链式 bash 命令运行吗?

PHP shell_exec() 不工作,但命令从控制台工作

c# - MFC 对话框中使用的托管 C# 用户控件未处理的异常

c++ - 哈里斯角点坐标