如何确定鼠标的拖动方式(Win32、C++)
How to determine which way the mouse is being dragged (Win32, C++)
我目前正在做一个项目,该项目需要我知道鼠标何时向左或向右拖动。
我想用这些信息做的是在 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
相关文章:
- Win32编译器选项和内存分配
- C++win32 API创建多个类似视口的窗口
- WM_CTLCOLORSTATIC从未在WIN32应用程序中触发
- 检测win32服务创建和删除的最佳方法
- WIN32:C++,为什么在WM_CLOSE上调用Messagebox函数程序正在冻结
- 将 win32 hbitmap 转换为 winrt softwarebitmap
- 使用 WIN32 API (C/C++) 对特定树视图项进行着色
- Alt+Enter 在 Win32 应用中,管理大小调整和分辨率
- VSCode C++ 编译的exe感染了Win32:TrojanX-gen[Trj]
- 从预处理器获取 Windows 版本(C++ Win32)
- Issues with Win32 ReadProcessMemory API
- Win32 发送输入鼠标移动滞后并冻结
- 如何从 Win32 C++ 应用程序输出到父控制台窗口?
- C++线程:如何在一个线程仍在运行时阻止另一个线程执行 (Win32)
- 将 Win32/WinAPI 应用程序移植到 wxWidgets
- Win32 API 控制台光标在 WriteConsole 后不移动
- C++ Win32 Threads
- C++ win32 如何使密码字段可选并启用复制和粘贴?
- LNK1104:无法打开libpjproject-i386-Win32-vc14-Debug-Static.lib
- 如何在 Win32 C++控制台应用程序中调用 UWP 类库