当控制台关闭时,从GUI应用程序附加控制台



我需要能够从用C++编写的基于GUI的应用程序输出到控制台,所以我选择使用AttachConsole(ATTACH_PARENT_PROCESS)API和这段代码来实现这一点,除了当我从命令提示符窗口启动GUI应用程序时,GUI应用程序启动得很好,但当我关闭命令提示符窗口时,我的GUI应用程序被终止(注意,不是关闭,而是终止。)有什么方法可以防止这个应用程序终止吗?

当有人关闭控制台窗口时,您可以阻止应用程序关闭。

它涉及调用SetConsoleCtrlHandler来设置一个截获这些事件的HandlerRouine。

如果你想关闭控制台窗口,但让应用程序继续运行,你可以在HandlerRoutine中调用FreeConsole。如果这不起作用,那么处理消息以防止控制台窗口被破坏,并设置一个标志或计时器,使您的应用程序在从处理程序返回后调用FreeConsole

我记得,当用户点击窗口上的X时,你无法阻止窗口关闭。我所做的就是修改窗口菜单。看见http://blog.mischel.com/2008/07/14/going-too-far-back/了解一些细节。

我能够解决这个问题,方法是在将文本发布到stdout流之前连接到父控制台,然后从中分离。这样,文本就可以正常发布,控制台与我的GUI应用程序保持分离。

下面是MFC/C++类,它为那些想要使用它的人提供了完整的实现。

相关内容

  • 没有找到相关文章

最新更新