c++ - 处理鼠标拖动的正确方法是什么?

标签 c++ windows

我需要实现如下所示的鼠标拖动事件:

class MouseDragEvent
{
public:
   uint m_btn;
   uint m_x, m_y;
   uint m_delta_x, m_delta_y;
};

我想我需要检查 WM_LBUTTONDOWN 和 WM_LBUTTONUP 消息并手动查找 x 和 y 的变化。有没有拖拽信息或者更好的方法?

最佳答案

首先检测 WM_LBUTTONDOWN。记录按下鼠标按钮的起始坐标。检查 WM_MOUSEMOVE,当鼠标移出由 GetSystemParameters(SM_CXDRAG)GetSystemParameters(SM_CYDRAG) 确定的矩形时,使用 SetCapture 捕获鼠标。此时继续响应 WM_MOUSEMOVE 并检查 WM_LBUTTONUP。此时您可能想要更改鼠标光标。还要检查 WM_CAPTURECHANGED ,这意味着拖动已中止。拖动完成后调用 ReleaseCapture

编辑:这个过程的大部分都可以通过 DragDetect 函数自动完成。从 WM_LBUTTONDOWN 处理程序调用此函数。

关于c++ - 处理鼠标拖动的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6142206/

相关文章:

windows - 如何在 Debug模式下将 wildfly 作为 Windows 上的服务运行?

windows - 用不同目录中的文件替换子目录中的多个文件

javascript - 你好,在我的expo项目中安装DateTimePicker(React Native)

c++ - 查找快速进程的 CPU 使用率

c++ - 使用事件构建游戏逻辑

c++ - static_assert 负整数

python - py2exe:为什么不包括一些标准模块?

c++ - 如何获取 QTableView 的标题列表?

c++ - 类矩阵类的深拷贝

c++ - 按住滚动条获取命令提示符以在 Windows 中暂停