1

我目前正在做一个项目,该项目需要我知道鼠标何时被拖到左边或右边。

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

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

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

有人可以帮帮我吗?

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

4

2 回答 2

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)来确定它们是否曾经被设置过。

于 2012-09-30T01:57:38.543 回答
0

您可以使用该DragDetect功能。

BOOL DragDetect(HWND  hwnd, POINT pt);

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

于 2020-01-28T18:32:55.363 回答