我为 OpenCascade 修改了一个 MFC 示例,添加了一些功能(它是 HLR 示例)。该应用程序使用文档/ View 架构,文档类完成大部分工作。
一些新功能不需要 GUI,因此程序会在 GUI 打开之前退出,我通过从 CDocument 特化中调用 exit(0)
来执行。
我的问题是,对于我们的工作流程,将从 Windows 命令行调用 MFC 应用程序。一旦被调用,它就会将控制权返回给 shell,并在后台愉快地继续运行,无论是否打开 GUI。我需要应用程序做的是从命令行阻止,无论 GUI 是否打开。
我一直在阅读 CWinApp 和 CMDIFrameWnd,但如果您可以从命令行阻止您的应用程序,我不知道该怎么做。
最佳答案
如果您使用链接器选项/SUBSYSTEM:CONSOLE 将可执行文件设置为控制台应用程序,则命令行将阻塞直到应用程序退出。请记住,控制台应用程序可以具有 Windows GUI。
设置链接器设置/SUBSYSTEM:CONSOLE 确实有一个问题,如果您这样做作为链接器设置,您将不得不将入口点调整为 main() 而不是 winmain。在以下线程中,有一些解决方法(感谢 Ulrich Eckhardt 提到入口点): Visual Studio 2012 C++ Standard Output
这种方法还有第二个缺点。如果程序不是从控制台窗口运行,应用程序将为您创建一个控制台窗口。这可能会使用户感到困惑。
关于c++ - 如何让 MFC 应用程序从命令行阻止?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17218338/