WM_RBUTTONUP消息收不到问题

    

         今天遇到了个问题,对某窗口进行右键弹出菜单,发现没弹出来,然后打断点发现WM_RBUTTONUP消息收不到

          捣鼓了下,找到了原因。       

          在Duilib中,当设置了Caption后,Duilib处理鼠标点击测试消息:WM_NCHITTEST

          

         如上,即当鼠标点击是Caption区域,如果不是Button或者RichEdit的话,会返回HTCAPTION,即告诉WINDOWS我是非客户端区。

         非客户端,用户可以用鼠标对窗口进行拖拽(相当于模拟了标题栏)。

         此时,当用户鼠标点击时,你就得不到常规的WM_LBUTTONXXX 与 WM_RBUTTONXXX了 

         相反,你会得到WM_NCLBUTTONXXX 与 WM_NCRBUTTONXXX    

         因此,如果你想通过鼠标右键产生菜单的话,可以同时处理

         case WM_RBUTTONUP:             //leave it down

         case WM_NCRBUTTONUP:

              CreateMenu();

        break;

       更多的关于WM_NCHITTEST,可参考这篇文章https://www.cnblogs.com/GnagWang/archive/2010/09/12/1824394.html

原文地址:https://www.cnblogs.com/xuhuajie/p/11724370.html