MFC 判断鼠标移动到某个控件上
时间: 2023-08-20 16:04:10 浏览: 627
在 MFC 中,可以使用以下步骤判断鼠标是否移动到某个控件上:
1. 首先获取鼠标的当前位置,可以使用 GetCursorPos 函数获取当前鼠标的屏幕坐标。
2. 然后将屏幕坐标转换为窗口坐标,可以使用 ScreenToClient 函数。如果是在对话框中,则可以直接使用 ScreenToClient(this->m_hWnd, &pt) 进行转换。
3. 接下来,使用 ChildWindowFromPoint 函数获取当前鼠标所在的子窗口句柄。如果返回的句柄不为 NULL,则说明鼠标当前在某个子窗口上。
4. 最后,判断该子窗口是否为需要判断的控件,可以使用 GetDlgCtrlID 函数获取该控件的 ID 号进行判断。
下面是一个示例代码:
```
void CMyDialog::OnMouseMove(UINT nFlags, CPoint point)
{
CDialog::OnMouseMove(nFlags, point);
// 获取当前鼠标位置
POINT pt;
::GetCursorPos(&pt);
ScreenToClient(this->m_hWnd, &pt);
// 获取当前鼠标所在的子窗口句柄
HWND hWnd = ::ChildWindowFromPoint(this->m_hWnd, pt);
// 判断是否为需要判断的控件
if (::GetDlgCtrlID(hWnd) == IDC_MY_CONTROL)
{
// 鼠标移动到了 IDC_MY_CONTROL 控件上
// 在这里进行相应的处理
}
}
```
注意,如果需要判断的控件是在对话框上的,还需要在对话框类中添加 OnMouseMove 函数的消息映射,例如:
```
BEGIN_MESSAGE_MAP(CMyDialog, CDialog)
ON_WM_MOUSEMOVE()
END_MESSAGE_MAP()
```
阅读全文