|  | 
 
| 
本帖最后由 proof 于 2022-3-11 10:33 编辑
x
马上注册,结交更多好友,享用更多功能^_^您需要 登录 才可以下载或查看,没有账号?立即注册  
 // 窗口过程  window procedure
 LRESULT CALLBACK TheWindowProc (  ........  )
 {
 switch ( uMsg )
 {
 case WM_KEYDOWN:        //a key has been pressed
 {
 if ( wParam == VK_ESCAPE ) DestroyWindow ( hWnd ) ;       2号退出
 return ( 0 ) ;
 } break ;
 
 case WM_DESTROY : //window being destroyed
 {
 PostQuitMessage ( 0 ) ;                                                       3号退出
 return ( 0 ) ;
 } break ;
 
 }
 }
 
 
 int WINAPI WinMain (  .........  )
 {
 // 消息循环
 MSG msg ;
 for ( ; ; )         {
 //check for a message
 if ( PeekMessage( &msg , NULL , 0 , 0 , PM_REMOVE ) )
 if ( msg.message == WM_QUIT )   break ;                           1号退出
 TranslateMessage ( &msg ) ;
 DispatchMessage ( &msg ) ;
 }
 return ( msg.wParam ) ;
 }
 
 ---------------------------------------------------------
 一个windows程序为啥有这多“退出” ?
 
 高手给解释一下,1、2、3号退出,到底是做什么的?
 
 
 
 本帖最后由 hrpzcf 于 2022-3-11 11:52 编辑 
 我的理解:
 2:窗口过程检测到WM_KEYDOWN消息后,判断按键是否VK_ESCAPE ,是的话就执行DestroyWindow 销毁窗口并发出一个WM_DESTROY 消息
 3:窗口过程检测到WM_DESTROY 消息后,执行PostQuitMessage(0)发出WM_QUIT 消息表示请求退出程序
 1:主消息循环检测到WM_QUIT 消息,执行break结束循环,程序跳出循环执行到return ( msg.wParam ) ,也就结束了
 | 
 |