读书人

为什么获取不到MouseMove消息呢解决方

发布时间: 2012-02-21 16:26:23 作者: rapoo

为什么获取不到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);} 

读书人网 >C++ Builder

热点推荐