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

C++ 如何确定拖动鼠标的方式(Win32,C+;+;),c++,winapi,C++,Winapi,我目前正在进行一个项目,该项目要求我知道鼠标何时被向左或向右拖动 我想用这些信息做的是在3d空间(使用OpenGL/Win32)中向左或向右拖动对象,具体取决于鼠标的拖动方式 问题是,我不知道如何确定鼠标的拖动方式 我试图找到上一个x坐标,并从当前x坐标中减去它,但我不知道如何确定上一个x坐标 有人能帮我吗 (p.S.我已经知道当前的x鼠标位置是通过LOWORD(lParam)找到的,但我不知道如何确定以前的x鼠标位置。谢谢您的时间。)您可以将当前鼠标位置存储为“最后”鼠标位置,然后在两次鼠标位

我目前正在进行一个项目,该项目要求我知道鼠标何时被向左或向右拖动

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

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

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

有人能帮我吗


p.S.我已经知道当前的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);

您可以将当前位置存储在一个变量中,下次将其用作上一个位置。我尝试了上述方法,但是,我的问题是,当我存储当前位置并与新的当前位置进行检查时,它们总是相等(相同)。例如,如果我当前的鼠标位置是10,并且我再次更改了它,我将检查xprev与curx,它们都将等于10。windows过程中的静态变量可以用来存储以前的变量。解决方案的核心是使存储前一个x位置的变量成为函数本身的全局变量。@JamesDiaz:“当我存储当前位置,并将其与新的当前位置进行检查时,它们总是相等的”,那么您的代码中就有一个bug。也许你应该发布代码以便我们能看到。两个问题,我如何确定鼠标何时更新了两次,第二个问题,这个“actOnDrag”是什么?我当时完全迷路了。@JamesDiaz:“这个“actOnDrag”是什么?我当时完全迷路了。”这是您编写的函数,用于根据鼠标的拖动方向执行所需操作。“鼠标被“更新两次”你在说什么?”Ravuya写道:“然后在两次mosue位置更新后,减去。”我想知道如何准确确定鼠标位置被更新两次的时间。(这就是我所说的两次更新)@JamesDiaz:他的文章的最后一行告诉你如何更新。