【发布时间】:2009-08-14 03:25:59
【问题描述】:
如何检查鼠标左键当前是否被按下/拖动(我更喜欢第一种可能性)。
我试过 Mouse.IsDraging,但没有结果。
注意:我在我的应用程序中处理鼠标消息,所以如果它是 WM 也没问题,只需分享一种完成我的任务的方法。
【问题讨论】:
如何检查鼠标左键当前是否被按下/拖动(我更喜欢第一种可能性)。
我试过 Mouse.IsDraging,但没有结果。
注意:我在我的应用程序中处理鼠标消息,所以如果它是 WM 也没问题,只需分享一种完成我的任务的方法。
【问题讨论】:
有一个 Windows API 函数GetAsyncKeyState(),尽管它的名字也可用于获取鼠标按钮的状态。链接的文档直接包含您问题的答案:
GetAsyncKeyState函数适用于鼠标按钮。但是,它会检查物理鼠标按钮的状态,而不是物理按钮映射到的逻辑鼠标按钮。例如,调用GetAsyncKeyState(VK_LBUTTON)始终返回物理鼠标左键的状态,无论它是映射到逻辑鼠标左键还是逻辑鼠标右键。您可以通过调用GetSystemMetrics(SM_SWAPBUTTON)来确定系统当前物理鼠标按钮到逻辑鼠标按钮的映射,如果鼠标按钮已被交换,则返回TRUE。
结果类型为short,检查最高位只测试值是否为负。
【讨论】:
(result and $8000) <> 0 之类的东西。
(result and $8000) <> 0。谢谢!
OnMouseMove(UINT nFlags, CPoint point)
{
m_LButtonPressed=nFlags & MK_LBUTTON;
CWnd::OnMouseMove(nFlags, point);
}
【讨论】: