• windows创建窗口、关闭窗口流程


    NC,即 non-client 区域,包括标题栏、窗口边框、最大、最小按钮、滚动条等。

    一、在调用Windows的::CreateWindowEx函数创建窗口时,一般会先发出 WM_NCCREATE消息,然后发出 WM_CREATE消息。

    当窗口准备关闭,此时先发出WM_DESTROY消息,再发出WM_NCDESTROY消息。

    顺序如下:

    WM_NCCREATE
    WM_CREATE
    。。。。
    WM_DESTROY
    WM_NCDESTROY


    如果在关闭时,这个窗口存在子窗口,那么会先发送子窗口的WM_DESTROY和WM_NCDESTROY消息,接着发送父窗口的WM_DESTROY和WM_NCDESTROY消息。
    顺序:
    WM_DESTROY    //CHILD,子窗口消息
    WM_NCDESTROY  //CHILD,子窗口消息
    WM_DESTROY    //Parent,父窗口消息    
    WM_NCDESTROY  //Parent,父窗口消息

    二、WM_CLOSE、WM_DESTROY、WM_QUIT区别

    WM_CLOSE:关闭应用程序窗口

    WM_DESTROY:关闭应用程序

    WM_QUIT:关闭消息循环

    只有关闭了消息循环,应用程序的进程才真正退出(在任务管理器里消失)。

    win32应用程序的完整退出过程:1、点击窗口右上角的关闭按钮,发送WM_CLOSE消息。

    2、此消息处理中调用DestroyWindow函数,发送WM_DESTROY消息。

    3、此消息处理中调用PostQuitMessage(0)函数,发送WM_QUIT消息到消息队列中。

    4、GetMessage捕获到WM_QUIT,返回0,退出循环(应用程序真正退出)。

    注意:按照上述正常流程,WM_QUIT是不会到达窗口过程的。(因为在GetMessage截获了WM_QUIT消息之后,程序已经彻底退出了!)

  • 相关阅读:
    Python——数据结构——字典
    Python——print()函数
    Python数据结构——序列总结
    elasticsearch全文检索java
    elasticsearch单例模式连接 java
    【转载】信号中断 与 慢系统调用
    设计模式——状态模式(C++实现)
    设计模式——观察者模式(C++实现)
    C++调用C方法
    设计模式——外观模式(C++实现)
  • 原文地址:https://www.cnblogs.com/pjl1119/p/7965822.html
Copyright © 2020-2023  润新知