• WM_CLOSE WM_QUIT WM_DESTROY 三者的区别


    一 个窗口或者应用程序应该被关闭时发出WM_CLOSE消息,当接收到WM_CLOSE消息时,如果你愿意,向用户提出是否真的退出。你知道让用户作确认或 有错误出现或有什么应该注意的事情发生的时候,往往弹出一个消息框。
    插播消息框
     int MessageBox(
     HWND hWnd, // handle of owner window
     LPCTSTR lpText, // address of text in message box
     LPCTSTR lpCaption, // address of title of message box
     UINT uType // style of message box
     );
     当收到WM_CLOSE消息,你可以做两件事儿。一件是你接受默认的处理返回一个值,你若这样做了,应用程序或窗口按照计划关闭;再者,你返回0,应用程序或窗口将保持原样。以下是代码的基本部分:
     if (msg == WM_CLOSE)
     {
     if (MessageBox(hMainWindow, "Are you sure want to quit?", "Notice", MB_YESNO | MB_ICONEXCLAMATION) == IDNO)
     return(0);
     // otherwise, let the default handler take care of it
     }


     WM_DESTROY消息有点儿不同。它是窗口正在关闭时发出的。
     当得到WM_DESTROY消息的时候,窗口已经从视觉上被删除。
     
     一个主窗口被关闭,并不意味着应用程序结束了,它将在没有窗口的条件下继续运行。
     然而,当一个用户关闭了主窗口,也就意味着他要结束应用程序,所以如果你希望应用程序结束,在收到WM_DESTROY消息的时候,你必须发出一个WM_QUIT消息。
     WM_QUIT是应用程序结束发出的消息,一般可以看成进程被kill掉的情况.
     
    PostQuitMessage是向系统发出要终止线程的请求, 在终止线程前系统还要做些内存的清理工作, 我们关闭一个程序时是发送WM_CLOSE消息, 然后调用DestroyWindow函数,调用DestroyWindow时系统会向程序发WM_DESTROY消息,终止整个程序
     
    用自己的话总结一下:WM_CLOSE 消息发出的时候,用户可以根据自己的意愿来选择到底是否关闭,WM_DESTORY 是真的关闭一个窗口。WM_QUIT是退出一个应用程序
     
    WM_CLOSE -调用-> DestroyWindow -发送-> WM_DESTROY --> WM_QUIT
     
    https://blog.csdn.net/tunnel115/article/details/4546913/
  • 相关阅读:
    LeetCode Best Time to Buy and Sell Stock II
    LeetCode Best Time to Buy and Sell Stock
    LeetCode Word Break
    LeetCode Climbing Stairs
    LeetCode Minimum Path Sum
    LeetCode N-Queens II
    LeetCode N-Queens
    LeetCode Minimum Cost For Tickets
    用mybatis生成插件自动生成配置文件
    log4j.properties文件的配置
  • 原文地址:https://www.cnblogs.com/DirWang/p/14210408.html
Copyright © 2020-2023  润新知