问题:
我出来的WM_NCHITTEST,但同时又想处理WM_RBUTTONUP,可以结果却是两者无法共存。而我的需求就是“两者共存”。
问题原因:
对 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
:) 现在你应该知道本文的标题其实是有问题的了吧,不过这确实是我当时的“问题”。
--- The End ---
WM_NCHITTEST后鼠标消息收不到
最新推荐文章于 2024-09-01 14:54:08 发布