我有一个现有的 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/