proof1 发表于 2022-3-11 09:55

一个windows程序为啥有这多“退出” ?

本帖最后由 proof1 于 2022-3-11 09:57 编辑


// 窗口过程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号退出,到底是做什么的?

tsubasa9 发表于 2022-3-11 09:57

不懂就买本书看,大概你连TheWindowProc 是啥都不知道吧

proof1 发表于 2022-3-11 09:59

本帖最后由 proof1 于 2022-3-11 10:37 编辑

tsubasa9 发表于 2022-3-11 09:57
不懂就买本书看,大概你连TheWindowProc 是啥都不知道吧
精英213

消亡值语义 发表于 2022-3-11 10:06

官方的hello world
只需要一个PostQuitMessage(0);
网上很多代码复制粘贴瞎搞,不如不看

https://github.com/microsoft/Windows-classic-samples/blob/main/Samples/Win7Samples/begin/LearnWin32/HelloWorld/cpp/main.cpp

chachi 发表于 2022-3-11 11:21

注释不是写的挺好的,收到不同消息退出,有按键esc有窗口被关,有退出消息
看不懂去了解下win32消息机制

----发送自 samsung SM-N9600,Android 10

proof1 发表于 2022-3-11 11:43

chachi 发表于 2022-3-11 11:21
注释不是写的挺好的,收到不同消息退出,有按键esc有窗口被关,有退出消息
看不懂去了解下win32消息机制




代码的原意是:按ESC键 退出整个应用(窗口)程序。

1、2、3号退出,是否有的语句根本不会执行?(代码bug?)
真正执行退出动作的是哪一个?哪些个语句是聋子耳朵?

commanderyuri 发表于 2022-3-11 12:00

chachi 发表于 2022-3-11 12:03

https://stackoverflow.com/questions/3155782/what-is-the-difference-between-wm-quit-wm-close-and-wm-destroy-in-a-windows-pr

我没办法判断代码质量,建议自己查看win32手册
页: [1]
查看完整版本: 一个windows程序为啥有这多“退出” ?