检查鼠标按钮是否已关闭?

时间:2009-08-14 03:25:59

标签: delphi mouse

如何检查我的鼠标左键当前是否按下/拖动某物(我预先设定了第一种可能性)。

我尝试了Mouse.IsDraging,但没有结果。

注意:我在我的应用程序中处理鼠标消息,所以如果它是WM,没问题,只是分享一种方法来完成我的任务。

2 个答案:

答案 0 :(得分:20)

有一个Windows API函数GetAsyncKeyState(),尽管它的名称也可用于获取鼠标按钮的状态。链接的文档直接包含您的问题的答案:

  

GetAsyncKeyState功能适用于鼠标按钮。但是,它会检查物理鼠标按钮的状态,而不是物理按钮映射到的逻辑鼠标按钮。例如,调用GetAsyncKeyState(VK_LBUTTON)始终返回左物理鼠标按钮的状态,无论它是否映射到左或右逻辑鼠标按钮。您可以通过调用GetSystemMetrics(SM_SWAPBUTTON)来确定系统的物理鼠标按钮到逻辑鼠标按钮的当前映射,如果鼠标按钮已被交换,则返回TRUE

结果类型为short,以检查最重要的位,只测试该值是否为负。

答案 1 :(得分:0)

OnMouseMove(UINT nFlags, CPoint point)
{
  m_LButtonPressed=nFlags & MK_LBUTTON;
  CWnd::OnMouseMove(nFlags, point);
}