Windows中点击“关闭”按钮发生了什么?
2020-12-13 03:55
标签:windows 消息 对于Windows操作,当用户点击"关闭"按钮时,窗口函数就会收到一个WM_DESTROY消息。 窗口函数应该调用PostQuitMessage(0) 向消息队列插入一个WM_QUIT消息。GetMessage 如果从消息队列中取得的是WM_QUIT消息,它将返回0,从而导致消息循环结束,WinMain函数退出,整个应用程序退出。 只要通过点击窗口右上角的“关闭”按钮,来关闭窗口并退出应用程序。能不能在结束应用程序之前弹出一个对话框,来确认一下我们的操作呢? 要做到这一点,首先要了解单击“关闭”按钮开始,一直到最后应用程序退出到底发生了什么。其实,这是一个很“复杂”的过程,描述如下: 1)单击窗口右上角的“关闭”按钮,系统向消息队列插入WM_CLOSE消息; 2)窗口函数调用DefWindowProc 处理WM_CLOSE消息:调用DestroyWindow() 函数; 3)窗口关闭,并向消息队列插入WM_DESTROY消息; 4)窗口函数函数处理WM_DESTROY消息:调用PostQuitMessage 函数,向消息队列插入WM_QUIT消息; 5)主函数的消息循环中的GetMessage获取WM_QUIT消息返回0,导致消息循环结束,进而WinMain函数结束,再进而整个进程结束。 我们可以从这个过程中看到三个消息:WM_CLOSE、WM_DESTROY、WM_QUIT。 WM_CLOSE代表用户希望结束应用程序;WM_DESTROY代表窗口的关闭;WM_QUIT代表进程的结束。 怎样在结束应用程序之前弹出一个对话框,来确认一下我们的操作呢?可以在WndProc 中添加对WM_CLOSE的消息处理。代码如下: 关于窗口函数与消息处理机制:
http://blog.csdn.net/sanqima/article/details/34427471 http://blog.csdn.net/sanqima/article/details/32179711 Windows中点击“关闭”按钮发生了什么?,搜素材,soscw.com Windows中点击“关闭”按钮发生了什么? 标签:windows 消息 原文地址:http://blog.csdn.net/sanqima/article/details/36433543//窗口函数,用于消息处理
LRESULT CALLBACK WndProc(HWND hWnd,UINT msg,WPARAM wParam,LPARAM lParam){
int nSel=0;
switch(msg){
case WM_CLOSE:
nSel=MessageBox(hWnd,L"你真的要退出吗?",szWindowTitle,MB_YESNO|MB_ICONQUESTION);
if(nSel==IDYES) DestroyWindow(hWnd);
return 0;
case WM_DESTROY:
PostQuitMessage(0);
return 0;
default:
return DefWindowProc(hWnd,msg,wParam,lParam);
}
}
效果如下:
下一篇:python