在控制台关闭时从GUI应用程序AttachConsole

时间:2013-02-20 21:22:49

标签: c++ winapi console-application command-prompt

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

2 个答案:

答案 0 :(得分:0)

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

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

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

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

答案 1 :(得分:0)

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

Here's the MFC/C++ class完全实现了那些想要使用它的人。