gpt4 book ai didi

c++ - Windows 程序中的 WM_QUIT、WM_CLOSE 和 WM_DESTROY 有什么区别?

转载 作者:IT老高 更新时间:2023-10-28 13:20:57 24 4
gpt4 key购买 nike

我想知道 Windows 程序中的 WM_QUIT、WM_CLOSE 和 WM_DESTROY 消息之间有什么区别,本质上是:它们是什么时候发送的,除了程序定义的之外,它们是否有任何自动效果?

最佳答案

它们完全不同。

WM_CLOSE 在窗口关闭时发送到窗口 - 当它的“X”按钮被点击,或者从窗口的菜单中选择“关闭”,或者 Alt-F4 在窗口具有焦点时被按下,等等。如果您收到此消息,这是您如何处理它的决定 - 忽略它,或者真正关闭窗口。默认情况下,传递给 DefWindowProc()WM_CLOSE 会导致窗口被销毁。

WM_DESTROY 在窗口开始被销毁时被发送到窗口。在这个阶段,与WM_CLOSE相反,你不能停止进程,你只能进行必要的清理。当您捕获 WM_DESTROY 时,它的子窗口还没有被销毁。

WM_NCDESTROY 在完成销毁时发送到窗口。此时它的所有子窗口都已销毁。

WM_QUIT 与任何窗口都不相关(从GetMessage() 得到的hwnd 为NULL,不调用窗口过程)。此消息指示应停止消息循环并退出应用程序。当 GetMessage() 读取 WM_QUIT 时,它返回 0 来表示。看看a typical message loop snippet - 当 GetMessage() 返回非零时,循环继续。

WM_QUIT 可以由 PostQuitMessage() 函数发送。该函数通常在主窗口接收到 WM_DESTROY 时调用(参见 a typical window procedure snippet )。

关于c++ - Windows 程序中的 WM_QUIT、WM_CLOSE 和 WM_DESTROY 有什么区别?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3155782/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com