为什么获取不到MouseMove消息呢 - C++ Builder / Windows SDK/API
在一个对话框 的基础上,创建了一个EDIT窗口放在整个客户区。。
我想在对话框的回调函数中处理鼠标指针移动的事件,动态显示鼠标位置,可是好像根本收不到WM_MOUSEMOVE消息。。
只能收到WM_NCMOUSEMOVE消息..
是不是因为那个EDIT把WM_MOUSEMOVE消息覆盖了,还是什么。。表示菜鸟,不理解。。
谢谢大家!
[解决办法]
你自己分析的很对,edit挡住了窗体,你也可以在edit的这个事件里处理
[解决办法]
因为你的 Edit 控件覆盖了整个窗体的客户区域,所以,当你移动鼠标的时候,只会触发 Edit 控件的 MouseMove 事件。你把代码写在 Form 的 MouseMove 事件中,当然收不到。
解决办法很简单,你只需要处理 Edit 控件的 MouseMove 事件即可。
- C/C++ code
void __fastcall TForm1::Edit1MouseMove(TObject *Sender, TShiftState Shift, int X, int Y){ TPoint PT; ::GetCursorPos(&PT); TPoint P; P=ScreenToClient(PT); this->Caption=IntToStr(P.x)+" "+IntToStr(P.y);}