1) 鼠标移动和按钮释放不在窗口客户端区域。因此,我应该使用WM\u NCMOUSEMOVE和WM\u nclubuttonup,而不是WM\u MOUSEMOVE和WM\u LBUTTONUP。
我不确定这个,但我可以猜到:也许系统总是发送
WM_MOUSEMOVE
WM_NCMOUSEMOVE
沿途某处(取决于
WM_NCHITTEST
在拖动操作期间,应用程序无论如何都看不到这些消息(正如您所注意到的),因此没有必要进行转换。
2) 如果我在窗口过程中的那些消息(WM\u MOUSEMOVE和WM\u LBUTTONUP)上放一个中断符,我不会在拖动窗口标题栏时截获这些消息!!!
记得吗
朋友是发帖的,不是发过来的。这意味着它们通常会流经您自己的消息循环,并通过
DispatchMessage
当您开始拖动窗口时,应用程序将进入一个所谓的
消息循环。在拖动完成之前,此循环不会返回,因此在此之前,您自己的消息循环不会运行!这个
WM_ENTERSIZEMOVE
WM_EXITSIZEMOVE
现在,可能是模态循环也向窗口过程发送消息;但是(至少对
如此)它没有。它不应该这样做,因为模态循环本身正在处理这些消息——将它们传递给winproc可能会导致混乱。