为什么消息处理程序处理完一个switch 分支之后返回的是0?该如何处理

为什么消息处理程序处理完一个switch 分支之后返回的是0?
为什么消息处理程序处理完一个switch 分支之后返回的是0? 返回其它整型的数有什么区别?

比如:

...

  switch ( message )
  {
  ...
   
  case WM_KEYDOWN:

  ... //处理语句

  return 0; // 这句为什么是返回0呢?返回其它的整数有什么分别??

  ...
  } 

...

------解决方案--------------------
《Programming Windows》一书上有解释。
窗口编程的约定就是这样的,如果你的窗口过程能够处理这个消息,那么处理结束后应该返回0,否则,应该把它交给DefWindowProc来处理,并直接返回该函数的返回值。
------解决方案--------------------
这个值是直接返回给SendMessage的,返回什么是不同消息定义不一样的。例如WM_INITDIALOG返回非0值表示由系统控制第一个获得焦点的控件,而0表示在OnInitDialog里你已经设置了焦点。因此不能用“返回0表示正常返回,返回其他整数表示出错代码”来解释。你完全可以定义一个消息并约定他应该返回什么

注意,不同消息返回定义是不同的