用户单击关闭按钮或者选择系统菜单中的关闭或者使用关闭组合键
↓
GetMessage,获取鼠标或键盘消息
↓
DispatchMessage,分派鼠标或键盘消息到窗口函数
↓
WndProc(1层)交给DefWindowProc处理
↓
DefWindowProc(1层)处理鼠标或键盘消息,发现用户要求关闭程序
↓
Send WM_SYSCOMMAND
↓
WndProc(2层)
↓
DefWindowProc(2层)响应WM_SYSCOMMAND
↓
Send WM_CLOSE
↓
WndProc(3层)
↓
DefWindowProc(3层)响应WM_CLOSE
↓
调用DestroyWindow
↓
Send WM_DESTORY
↓
WndProc(4层)响应WM_DESTORY
↓
调用PostQuitMessage→Post WM_QUIT
↓
PostQuitMessage返回
↓
WndProc(4层)返回
↓
DestroyWindow返回
↓
DefWindowProc(3层)返回
↓
WndProc(3层)返回
↓
DefWindowProc(2层)返回
↓
WndProc(2层)返回
↓
DefWindowProc(1层)返回
↓
WndProc(1层)返回
↓
DispatchMessage返回
↓
GetMessage获取下一个消息,即WM_QUIT
↓
GetMessage返回0,消息循环结束