我如何检查鼠标左键是否按下/拖动某物(我更喜欢第一种可能性)。
我尝试了Mouse.IsDragging,但没有结果。
注意:我在我的应用程序中处理鼠标消息,所以如果是WM,这不是问题,只需分享一种完成任务的方法即可。
GetAsyncKeyState()
,尽管它的名称是用于获取键盘按键状态,但也可以用来获取鼠标按钮的状态。链接的文档直接包含了你的问题的答案:
GetAsyncKeyState
函数可与鼠标按钮一起使用。然而,它检查的是物理鼠标按钮的状态,而不是映射到物理按钮上的逻辑鼠标按钮的状态。例如,调用GetAsyncKeyState(VK_LBUTTON)
总是返回左物理鼠标按钮的状态,而不管它是否映射到左或右逻辑鼠标按钮。可以通过调用GetSystemMetrics(SM_SWAPBUTTON)
来确定物理鼠标按钮到逻辑鼠标按钮的当前映射方式,如果鼠标按钮已经交换,则返回TRUE
。
short
类型的结果,要检查最高位,只需测试值是否为负数即可。(result and $8000)<> 0
的东西即可。 - mghie(result and $8000) <> 0
。谢谢! - VassilisOnMouseMove(UINT nFlags, CPoint point)
{
m_LButtonPressed=nFlags & MK_LBUTTON;
CWnd::OnMouseMove(nFlags, point);
}