如何捕捉鼠标事件?

halleyw 2005-03-11 10:04:27
一个对话框界面,上面有三个Button。
我想当鼠标移动到每个Button上时,会有不同的Static内容出现。因此,想在Dialog上捕捉鼠标位置。但是当鼠标移动到Button上时,这个OnMouseMove事件就不会响应了。所以也就弹不出对话框"aa"。怎么办?
下面是个测试的部分程序。

void CThreeInOneDlg::OnMouseMove(UINT nFlags, CPoint point)
{
CPoint rect_point;
RECT rect;

GetDlgItem(IDC_BUTTON_FILEB)->GetWindowRect(&rect);
ScreenToClient(&rect);

int x = point.x;
int y = point.y;

if( (x > rect.left ) && (x < rect.right )&& (y < rect.bottom ) && ( y > rect.top ))
AfxMessageBox("aa");
}
...全文
231 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
halleyw 2005-03-14
  • 打赏
  • 举报
回复
PreTranslateMessage确实是很好用~~~
StarsWu 2005-03-13
  • 打赏
  • 举报
回复
方法有多种:
1:处理PreTranslateMessage
2:加timer,用GetCursorPos获取鼠标位置,用GetWindowRect获取窗口矩形框,再用CRect中的IsPointIn(好象是这个函数)判断鼠标是否在窗口内。
3:处理鼠标钩子函数。
当然第一种简单得多。
yafizyh 2005-03-13
  • 打赏
  • 举报
回复
AfxMessageBox("aa"); 会将线程阻死的。
永夜星空 2005-03-13
  • 打赏
  • 举报
回复
处理对话框PreTranslateMessage(MSG* pMsg),你想怎么干都行
legendhui 2005-03-11
  • 打赏
  • 举报
回复
用WindowFromPoint函数返回一个指向窗口的指针,然后用这个指针操作就可以了
dreamy 2005-03-11
  • 打赏
  • 举报
回复
1. 可以分别响应Button和对话框的Mouse Move来得到你要的效果。
2. 也可以在对话框中加入WM_Timer,在OnTimer里面用WindowFromPoint获取当前所在的按钮。
halleyw 2005-03-11
  • 打赏
  • 举报
回复
1楼的,我不是很明白你的意思

当鼠标在Button上移动时,对话框的Mouse Move事件不会响应。也就是说当鼠标在Button上移动时,我上面那段程序根本就进不去。

我想当鼠标在Button上移动时,同样捕捉Mouse Move事件,怎么办?

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧