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