小弟在写代码的时候遇到个问题在处理WM_NCHITTEST的同时想要处理WM_RBUTTONUP可是就是不行,不知道为什么有没有那位大虾知道,马上要用,急等!

解决方案 »

  1.   

    以前曾经有人遇到这个问题,当时的回答是这样的:问题原因: 
    对 WM_NCHITTEST与WM_LBUTTONDOWN、WM_NCLBUTTONDOWN、WM_LBUTTONUP、 WM_NCLBUTTONUP、WM_RBUTTONUP、WM_NCRBUTTONUP、WM_MOUSEMOVE、WM_NCMOUSEMOVE的关系理解错误具体分析: 
    无标题窗口拖动,我们一般是采用:
    响应WM_NCHITTEST消息,返回HTCAPTION来实现。
    但是,如果在这同时还要处理鼠标的消息,如WM_LBUTTONDOWN、WM_LBUTTONUP、WM_RBUTTONUP、WM_MOUSEMOVE,你会发现,这些消息都收不到了。为什么? 
    因为你在WM_NCHITTEST中处理了鼠标消息,把他定位成HTCAPTION,也就是鼠标在标题栏上,而标题栏属于非客户区(NC);
    非客户区的事件消息都是以WM_NC开头的。也就是说,当你的WM_NCHITTEST返回HTCAPTION时,原来可以用WM_LBUTTONUP处理的消息,你只能用WM_NCLBUTTONUP来处理。解决烦方案: 
    自然是同时处理WM_NCHITTEST和WM_NCRBUTTONUP,而不处理WM_RBUTTONUP