This question already has an answer here:
What's the proper response to WM_ENDSESSION with ENDSESSION_CLOSEAPP and wParam == FALSE?
                                
                                    (1个答案)
                                
                        
                                3年前关闭。
            
                    
我正在尝试了解WM_ENDSESSION通知。 wParam为0时会在什么情况下被调用?

我了解如果会话结束,它将设置为TRUE。但是它还能做什么。

最佳答案

答案在您所链接的文档中:


  帕拉姆
  此参数可以是以下一个或多个值。如果此参数为0,则系统正在关闭或重新启动(无法确定正在发生哪个事件)。
  
  ENDSESSION_CLOSEAPP
  0x1
  
  如果wParam为TRUE,则应用程序必须关闭。任何数据都应自动保存而不提示用户(有关更多信息,请参见“备注”)。当应用程序使用需要替换的文件,必须为系统提供服务或系统资源用尽时,重新启动管理器会发送此消息。如果应用程序已使用RegisterApplicationRestart函数注册为重新启动,则它将重新启动。有关更多信息,请参阅应用程序准则。
  
  如果wParam为FALSE,则不应关闭该应用程序。


如果应用对WM_ENDSESSION的响应为TRUE,则该应用将收到WM_QUERYENDSESSION,以允许注销/关闭。

收到WM_ENDSESSION时,如果lParamENDSESSION_CLOSEAPP,则wParam可能为FALSE,表示注销/关机已被取消,并且该应用程序根本不需要退出。

关于c++ - 在什么时候调用wM_ENDSESSION且wParam为0? ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/38284832/

10-11 19:07