【问题标题】:C++: Execute function when program terminatesC ++:程序终止时执行函数
【发布时间】:2019-11-29 02:49:25
【问题描述】:

一些程序弹出“退出前保存?”终止时的消息。 我想知道我是否可以使用 C++ 控制台应用程序来实现它。 所以我尝试了一些标准函数,比如signalatexit

但它们仅在以下情况下起作用:

  • main() 返回 (atexit)
  • 通过 Ctrl+C 发送中断(在 Windows 上,SIGINT
  • 发生错误 (SIGABRT)

是的,怎么做?只有 GUI 应用程序才有可能吗?

【问题讨论】:

  • 请注意,GUI 应用程序实现了这一点,因为它们正在处理退出的请求,而不是实际的退出。如果您围绕这种消息处理风格类似地设计您的程序,那么您没有理由不能做同样的事情。至于你的问题,目前还不清楚实际问题是什么。您已经说过您正在处理较低级别的退出事件并列出了适合您的情况,但您没有指定不起作用的情况(你试图解决的实际问题)
  • 我希望在按下“X”按钮时发生退出事件(在 Windows 上)。我猜这是GUI的一部分。当控制台的退出按钮被按下时,向程序发送什么样的请求?

标签: c++ console signals atexit


【解决方案1】:

在 cmets 中,你说:

我希望在按下“X”按钮时发生退出事件(在 Windows 上)。 我猜这是GUI的一部分。 当控制台的退出按钮被按下时,向程序发送什么样的请求?

您可以使用SetConsoleCtrlHandler() 注册一个user defined callback function,在控制台窗口关闭时接收CTRL_CLOSE_EVENT 通知:

当用户关闭控制台(通过点击控制台窗口的窗口菜单上的关闭,或点击结束任务)时,系统向连接到控制台的所有进程发送的信号 来自任务管理器的按钮命令)。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-03-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多