我目前正在做一个项目,该项目需要我知道鼠标何时被拖到左边或右边。
我想用这些信息做的是在 3d 空间(使用 OpenGL/Win32)中向左或向右拖动一个对象,具体取决于拖动鼠标的方式。
问题是,我不知道如何确定鼠标的拖动方式。
我尝试找到之前的 x 坐标,并从当前的 x 坐标中减去它,但我不知道如何确定之前的 x 坐标!
有人可以帮帮我吗?
(PS我已经知道当前 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://docs.microsoft.com/en-us/windows/win32/api/winuser/nf-winuser-dragdetect