精华内容
下载资源
问答
  • WM_CLOSE WM_QUIT WM_DESTROY 三者的区别.pdf
  • 本文对WM_CLOSE、WM_DESTROY、WM_QUIT及各种消息投递函数的功能及区别做出了分析比对,有助于读者更好的对消息投递函数加以理解。详情如下: 一、WM_CLOSE、WM_DESTROY、WM_QUIT区别 WM_CLOSE:关闭应用程序窗口 WM_...
  • WM_CLOSE、WM_DESTROY、WM_QUIT区别 WM_CLOSE:关闭应用程序窗口 WM_DESTROY:关闭应用程序 WM_QUIT:关闭消息循环 只有关闭了消息循环,应用程序的进程才真正退出(在任务管理器里消失)。 点击窗口右上角的关闭...

    WM_CLOSE、WM_DESTROY、WM_QUIT区别

    WM_CLOSE:关闭应用程序窗口

    WM_DESTROY:关闭应用程序

    WM_QUIT:关闭消息循环

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

    点击窗口右上角的关闭按钮,或选择【File/Close】,发出 WM_CLOSE消息。CMyFrameWnd 并没有设置WM_CLOSE 处理常式,于是交给预设之处理常式即缺省窗口函数defwindoeproc。预设函数对于WM_CLOSE 的处理方式是呼叫 ::DestroyWindow, 并因而发出WM_DESTROY。预设之WM_DESTROY 处理方式是呼叫::PostQuitMessage,因此发出WM_QUIT。CWinApp::Run 收到WM_QUIT 后会结束其内部之回路。从而结束整个winmain函数。

    WM_CLOSE 消息发出的时候,用户可以根据自己的意愿来选择到底是否关闭,WM_DESTORY 是真的关闭一个窗口。WM_QUIT是退出一个应用程序

    展开全文
  • WM_DESTROY 是关闭程序 WM_CLOSE 是关闭窗口 WM_QUIT 是关闭消息环 WM_CLOSE和WM_DESTROY同属窗口消息,WM_QUIT则不在窗口消息之列。三者先后执行顺序是WM_CLOSE、WM_DESTROY、WM_QUIT 但需要注意的是MFC窗口...

         WM_DESTROY 是关闭程序
         WM_CLOSE 是关闭窗口
         WM_QUIT 是关闭消息环

         WM_CLOSEWM_DESTROY同属窗口消息,WM_QUIT则不在窗口消息之列。三者先后执行顺序是WM_CLOSEWM_DESTROY、WM_QUIT

       但需要注意的是MFC窗口默认取消按钮函数OnCancel()是不会触发WM_CLOSE消息只触发WM_DESTROY

    WM_CLOSE:

    在系统菜单里选择了“关闭”或者点击了窗口右上角的“X”按钮,你的窗口过程就会收到WM_CLOSEDefWindowProcWM_CLOSE的处理是调用DestroyWindow。当然,你可以不让DefWindowProc处理,而是自己处理,例如询问用户是否保存更改等。如果用户选择“取消”,你忽略此消息,那么程序照常运行;如果用户确认要退出,你就调用DestroyWindow

    WM_DESTROY:

    DestroyWindow完成窗口的清理工作,最后像窗口过程发送WM_DESTROY。对于WM_DESTROYDefWindowProc不会处理。也就是说,你如果不处理这个消息,虽然你的窗口已经销毁,但进程并不会结束。一般处理WM_DESTROY时都是释放资源(例如申请的内存等),然后调用PostQuitMessage

    WM_QUIT:

    PostQuitMessage会发送WM_QUIT给消息队列。注意,WM_QUIT永远不会到达窗口过程,因为GetMessage得到WM_QUIT后就会返回FALSE,从而结束消息循环,最后进程结束,程序退出。

     

    假设使用者执行HELLOWIN.exe,并且使用者最终单击了 Close按钮,或者假设用键盘或鼠标从系统菜单中选择了CloseDefWindowProc处理这一键盘或者鼠标输入,在检测到使用者选择了Close选项之后,它给窗口消息处理程序发送一条WM_SYSCOMMAND消息。WndProc将这个消息传给DefWindowProcDefWindowProc给窗口消息处理程序发送一条WM_CLOSE消息来响应之。WndProc再次将它传给DefWindowProcDestroyWindow呼叫DestroyWindow来响应这条WM_CLOSE消息。DestroyWindow导致Windows给窗口消息处理程序发送一条WM_DESTROY消息。WndProc再呼叫PostQuitMessage,将一条WM_QUIT消息放入消息队列中,以此来响应此消息。这个消息导致WinMain中的消息循环终止,然后程序结束。

    转载于:https://www.cnblogs.com/staring-hxs/archive/2013/01/30/2883542.html

    展开全文
  • WM_QUIT WM_CLOSE 区别

    2021-03-05 10:41:06
    WM_QUIT:关闭消息循环 只有关闭了消息循环,应用程序的进程才真正退出(在任务管理器里消失)。 Win32应用程序的完整退出过程:点击窗口右上角的关闭按钮,发送WM_CLOSE消息。此消息处理中调用DestroyWindow函数,...

    WM_CLOSE:关闭应用程序窗口

    WM_DESTROY:关闭应用程序

    WM_QUIT:关闭消息循环

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

    Win32应用程序的完整退出过程:点击窗口右上角的关闭按钮,发送WM_CLOSE消息。此消息处理中调用DestroyWindow函数,发送WM_DESTROY消息。此消息处理中调用PostQuitMessage(0)函数,发送WM_QUIT消息到消息队列中。GetMessage捕获到WM_QUIT,返回0,退出循环(应用程序真正退出)。

    所以一般退出应用程序之前,资源清理的代码应该放在OnClose函数中完成。

    展开全文
  • WM_CLOSE:关闭应用程序窗口 WM_DESTROY:关闭应用程序 WM_QUIT:关闭消息循环 转载于:https://www.cnblogs.com/Browneyes/p/6100153.html

    WM_CLOSE:关闭应用程序窗口

    WM_DESTROY:关闭应用程序
    WM_QUIT:关闭消息循环

    转载于:https://www.cnblogs.com/Browneyes/p/6100153.html

    展开全文
  • 在发送 WM_QUIT消息时,要使用PostMessage发送,否则,窗口已经关闭,但任务管理器中进程还存在。 可以通过 pDlg->PostMessage(WM_QUIT);或 DWORD dwThreadId = GetWindowThreadProcessId(pDlg->GetSafeHwnd...
  • 转自:... WM_DESTROY, WM_CLOSE, WM_QUIT WM_DESTROY 是关闭程序的  WM_CLOSE 是关闭窗口的  WM_QUIT 是关闭消息环的 以下是程序结束的过程: 1、使用者按[File/Close],系统发出WM_CLO...
  • 今天看了一写文章,才明白了WM_CLOSE WM_QUIT WM_DESTROY 三者的区别,下面是转载的内容:  这三个消息看 起来差不多,都是处理关闭的事情的。它们是WM_DESTROY,WM_CLOSE,和WM_QUIT。它们的确很相似,但你需要...
  • WM_DESTROY, WM_CLOSE, WM_QUIT WM_DESTROY 是关闭程序的  WM_CLOSE 是关闭窗口的  WM_QUIT 是关闭消息环的 以下是程序结束的过程: 1、使用者按[File/Close],系统发出WM_CLOSE消息 2、Frame把这条消息...
  • WM_CLOSE WM_QUITWM_DESTROY EndDialog的区别 1.WM_CLOSE其实就是我们按下右上方的那个"X"所执行的操作,这时窗口过程就会收到一个WM_CLOSE的消息,DefWindowProc是处理WM_CLOSE的默认函数,他调用...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 16,323
精华内容 6,529
关键字:

WM_QUIT