cout重定向到控制台失败

Chgooo 2021-04-08 11:11:36

AllocConsole();
freopen("CONOUT$", "w", stdout);

在MFC窗口程序中,上面两句打开一个与程序关联的控制台窗口,并将cout输出流重定向到控制台
上面两句代码放在OnInitDialog()中,可以打开控制台,cout,printf都正常输出

if (m_consoleOpend)
{
HWND hconsole = GetConsoleWindow();
FreeConsole();
::PostMessage(hconsole, WM_CLOSE, 0, 0);
m_consoleOpend = false;
}
else
{
AllocConsole();
FILE* f = freopen("CONOUT$", "w", stdout);
if (f == NULL)
{
MessageBox("重定向失败");
}
m_consoleOpend = true;
cout << "打开控制台" << endl;
printf("open Console");
}

在界面中按钮点击事件中放入以上代码,可以打开、关闭控制台,printf可以正常输出,cout不能输出,if (f == NULL)为false;
如果先在OnInitDialog()打开控制台,然后点击按钮关闭,再点击按钮打开,此时cout,printf都能输出
为什么?怎样才能点击按钮时cout也能输出到控制台?
...全文
253 1 打赏 收藏 转发到动态 举报
写回复
用AI写文章
1 条回复
切换为时间正序
请发表友善的回复…
发表回复

64,637

社区成员

发帖
与我相关
我的任务
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++ 技术论坛(原bbs)
社区管理员
  • C++ 语言社区
  • encoderlee
  • paschen
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
  1. 请不要发布与C++技术无关的贴子
  2. 请不要发布与技术无关的招聘、广告的帖子
  3. 请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下

试试用AI创作助手写篇文章吧