【MFC】如何设置让exe的控制台不会跟着exe退出而退出

在 Windows 下,MFC 程序(如 echo.exe)如果用 AllocConsole 创建了控制台窗口,默认情况下 ,当主程序(exe)退出时,控制台窗口也会自动关闭。这是操作系统的行为,不能直接阻止。

常见做法

1. 让主程序延迟退出

在主窗口关闭前,阻塞主线程(如 getchar()system("pause")、弹窗等),让用户有机会看到控制台内容。例如:

cpp 复制代码
void CechoDlg::OnDestroy()
{
    // ... 你的清理代码 ...
    std::cout << "按任意键关闭控制台..." << std::endl;
    getchar(); // 等待用户输入
    CDialogEx::OnDestroy();
}
2. 用外部命令行启动 exe

在命令行(cmd)中手动运行 echo.exe,这样即使程序退出,cmd 窗口不会自动关闭。

3. 写日志到文件

如果只是想保留调试信息,建议将日志输出到文件,而不是依赖控制台窗口。

4. 用 DebugView 或 plog 等日志库

用日志库输出到文件或调试窗口,便于分析。


结论

  • 控制台窗口和 exe 生命周期绑定,exe 退出时控制台必然关闭。
  • 最佳实践 :在程序退出前用 getchar() 或弹窗等方式阻塞,或直接用日志文件保存调试信息。

相关推荐
快乐的划水a4 小时前
组合模式及优化
c++·设计模式·组合模式
星星火柴9365 小时前
关于“双指针法“的总结
数据结构·c++·笔记·学习·算法
艾莉丝努力练剑6 小时前
【洛谷刷题】用C语言和C++做一些入门题,练习洛谷IDE模式:分支机构(一)
c语言·开发语言·数据结构·c++·学习·算法
阿巴~阿巴~8 小时前
深入解析C++ STL链表(List)模拟实现
开发语言·c++·链表·stl·list
旺小仔.9 小时前
双指针和codetop复习
数据结构·c++·算法
jingfeng5149 小时前
C++ STL-string类底层实现
前端·c++·算法
郝学胜-神的一滴9 小时前
基于C++的词法分析器:使用正则表达式的实现
开发语言·c++·程序人生·正则表达式·stl
努力努力再努力wz10 小时前
【c++深入系列】:万字详解模版(下)
java·c++·redis
瓦特what?12 小时前
关于C++的#include的超超超详细讲解
java·开发语言·数据结构·c++·算法·信息可视化·数据挖掘
祁同伟.12 小时前
【C++】动态内存管理
开发语言·c++