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

How to determine which way the mouse is being dragged (Win32, C++)

本文关键字:Win32 C++ 方式 何确定 鼠标 拖动      更新时间:2023-10-16

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

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

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

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

有人可以帮我吗?

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

您可以通过将

当前鼠标位置存储为"最后一个"鼠标位置来自己执行此操作,然后在两次鼠标位置更新后减去。

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

您可以设置 previousX 并将previousY到一些疯狂的哨兵值(例如 -1)以确定它们是否曾经被设置过。

您可以使用

DragDetect函数。

BOOL DragDetect(HWND  hwnd, POINT pt);

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