c++ - 如何让 MFC 应用程序从命令行阻止?

标签 c++ windows mfc opencascade

我为 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/

相关文章:

C++ VS2010 编译器不使用 'push' 进行简单的函数调用

c++ - OpenCV:为什么 SIFT 和 SURF 检测器会崩溃?

c++ - QT:使用 QVariant 实现任意复杂的数据结构

c++ - 在 C++ 中创建一个只有 1 个对象的类是一种浪费吗

c++ - getaddrinfo, AI_PASSIVE - 不同的行为 windows <-> linux

python - 如何启动 http 服务器,然后打开 Web 浏览器?

javascript - 错误 : spawn npm ENOENT

c++ - MFC:如何将多个窗口停靠在同一位置?

c++ - 如何在 Aero 玻璃窗上绘制不透明图像?

c++ - 如何将 std::regex_match 与 CString 一起使用?