一个对话框界面,上面有三个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");
}
我想当鼠标移动到每个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");
}
2. 也可以在对话框中加入WM_Timer,在OnTimer里面用WindowFromPoint获取当前所在的按钮。
1:处理PreTranslateMessage
2:加timer,用GetCursorPos获取鼠标位置,用GetWindowRect获取窗口矩形框,再用CRect中的IsPointIn(好象是这个函数)判断鼠标是否在窗口内。
3:处理鼠标钩子函数。
当然第一种简单得多。