gpt4 book ai didi

c++ - 具有重定向标准输出流的 GUI 应用程序不会将控制权返回给控制台

转载 作者:太空宇宙 更新时间:2023-11-04 11:58:35 25 4
gpt4 key购买 nike

我有一个用 C++(使用 MFC)编写的 GUI Windows 应用程序,它将自身附加到父控制台以通过 stdout 流进行输出。它使用 AttachConsole API 和 RedirectIOToConsole 方法 described here .

因此,如果我从常规控制台应用程序调用以下行( native 将输出输出到标准输出):

_tprintf(_T("Test message.\n"));

我得到了我期望的输出:

enter image description here

但是如果我从我的 GUI 应用程序(带有附加的父控制台)调用同一行代码,我会得到以下结果,除了控件似乎没有返回到父命​​令提示符窗口(见红色圆圈) ):

enter image description here

请注意,我可以在父命令提示符窗口中键入内容,因此它不会挂起,如果我按下回车键,它将执行我键入的任何命令。

那么我没有从我的控制台应用程序中调用什么来将控制权返回给父控制台?

最佳答案

这不是关于返回控制。

当您从命令提示符运行控制台应用程序时,命令提示符会一直等到控制台应用程序完成,因此您会看到控制台应用程序的输出后跟一个新的提示符,如第一张图片所示。

当您从命令提示符运行 GUI 应用程序时,命令提示符不会等待 GUI 应用程序完成,因此您通常会看到一个新的提示符,然后是 GUI 应用程序的输出,如下所示:

C:\>TestGuiProjWithOutputToConsole
C:\>测试消息。
_

正如您所注意到的,没有任何问题。您可以键入命令并且它们起作用,只是提示出现在错误的位置。

你的第二个例子没有显示第二个提示,可能是因为你有一个回车符所以提示被覆盖了。尝试在测试消息之前输出一个换行符,您应该会看到提示(尽管仍然在错误的位置)。

您可以通过运行告诉控制台等待 GUI 应用程序:

开始/等待 TestGuiProjWithOutputToConsole

简而言之,GUI 应用程序不能很好地使用命令提示符,因为它们同时运行并输出到同一个控制台,因此它们的输出是困惑的。

关于c++ - 具有重定向标准输出流的 GUI 应用程序不会将控制权返回给控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15107731/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com