2

我需要能够从我用 C++ 编写的基于 GUI 的应用程序输出到控制台,因此我选择使用AttachConsole (ATTACH_PARENT_PROCESS) API 和此代码来执行此操作。该方法效果很好,除了当我从命令提示符窗口启动我的 GUI 应用程序时,GUI 应用程序启动得很好,但是当我关闭命令提示符窗口时,我的 GUI 应用程序被终止(注意,不是关闭,而是终止。)有没有防止此应用程序终止的方法?

4

2 回答 2

1

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

它涉及调用SetConsoleCtrlHandler来设置拦截这些事件的HandlerRoutine 。

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

我记得,当用户点击窗口上的 X 时,您无法阻止窗口关闭。我所做的就是修改窗口菜单。有关详细信息,请参阅http://blog.mischel.com/2008/07/14/going-too-far-back/

于 2013-02-21T00:27:32.430 回答
0

我能够通过在将文本发布到流之前附加到父控制台stdout然后从它分离来解决此问题。这样,文本就可以正常发布,并且控制台与我的 GUI 应用程序保持分离。

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

于 2013-02-21T23:44:03.107 回答