【发布时间】:2018-03-24 14:26:32
【问题描述】:
我知道可以通过调用exit(0) 函数来关闭应用程序。并且通过使用它,在调用之前所有堆分配的内存都会被清除。所以你不必担心。
但是为了调试您的程序并更好地调查是否存在内存泄漏,不先释放所有内存就关闭程序是不切实际的。
所以我想通过添加系统通过按下窗口上的 X 按钮发送的相同消息来安排关闭 (WM_CLOSE)。
使用该消息(或事件),程序可以执行关闭应用程序的代码。
所以问题是是否有任何函数,或者来自 winapi 的某些东西将该消息添加到当前进程?
【问题讨论】:
-
消息循环接收
WM_CLOSE消息。 -
大错特错,到处都是。分析是,一些开发人员可能会怎么想。不是这种情况。一方面,并非每个窗口都提供通过按钮关闭它的能力。那些这样做的人可以通过多种不同的方式做到这一点。标准的 Windows 方法是有一个系统菜单项,最终导致关闭按钮向窗口的窗口过程发送
WM_CLOSE消息。默认实现 (DefWindowProc) 通过在窗口句柄上调用DestroyWindow来响应。 -
无论您一直在推动哪些编辑,您都有询问XY Problems 的历史。可以肯定的是,这里也是如此。那么你最终想要完成什么?
-
@IInspectable,我只想安排关闭应用程序。我无法在无法释放之前创建的某些堆数据的函数内调用
exit(0)。我会试试你提到的DestroyWindow;) -
在调用
exit(0)之前不释放堆分配的内存不会改变一件事。你正在拆除一个进程。为什么要在拆房子之前清理干净?以及您打算如何进入目标进程,并“安排关闭应用程序”(无论是什么意思)。