如何确定拖动鼠标的方式(Win32,C ++)

时间:2012-09-30 01:53:39

标签: c++ winapi

我目前正在开展一个项目,要求我知道何时将鼠标拖到左侧或右侧。

我想对这些信息做些什么,是在3d空间(使用OpenGL / Win32)中向左或向右拖动一个对象,具体取决于拖动鼠标的方式。

问题是,我不知道如何确定拖动鼠标的方式。

我尝试找到前一个x坐标,并从当前x坐标中减去它,但我不知道如何确定前一个x坐标!

有人可以帮帮我吗?

PS 我已经知道当前的x鼠标位置是用LOWORD(lParam)找到的,但我不知道如何确定以前的x鼠标位置。感谢您的时间。 )

2 个答案:

答案 0 :(得分:3)

您可以将当前鼠标位置存储为“最后”鼠标位置,然后在两次鼠标位置更新后减去。

onMouseMove(mouseX, mouseY):
    if previousX and previousY are set:
        deltaX = previousX - mouseX
        deltaY = previousY - mouseY
        actOnDrag(deltaX, deltaY)

    previousX = mouseX
    previousY = mouseY

您可以将previousXpreviousY设置为某个疯狂的哨兵值(例如-1),以确定它们是否曾被设置过。

答案 1 :(得分:0)

您可以使用DragDetect函数。

BOOL DragDetect(HWND  hwnd, POINT pt);

https://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-dragdetect