【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() 或弹窗等方式阻塞,或直接用日志文件保存调试信息。

相关推荐
阿米亚波34 分钟前
【C++ STL】std::unordered_multiset
开发语言·数据结构·c++·笔记·stl
随意起个昵称40 分钟前
贪心模型-Johnson法则
c++·算法
蜡笔小马41 分钟前
【保姆级教程】Windows 下 CGAL 6.2 + VS2022 全流程实战:从源码编译到项目集成(附避坑指南)
c++·cgal
xiaoye-duck1 小时前
《Linux系统编程》Linux 系统多线程(八): C++ 高并发线程池全链路深度解析与从零手撕实现
linux·c++·线程池
胖大和尚2 小时前
在C++的类中,是否可以把函数声明成__device__
c++·cuda
十年磨剑走天涯2 小时前
C++ STL 容器操作复杂度速查表
开发语言·c++
ziguo11222 小时前
Windows API MessageBox 函数详解
c语言·c++·windows·visualstudio
王老师青少年编程2 小时前
2023年CSP-J初赛真题及答案解析(11-15)
c++·真题·csp-j·答案·csp·初赛·信奥赛
15Moonlight2 小时前
C++进阶(09):特殊类设计
开发语言·c++
皓月斯语2 小时前
B3867 [GESP202309 三级] 小杨的储蓄 题解
c++·算法·题解