gpt4 book ai didi

c++ - 为什么 GET_X_LPARAM 会返回鼠标滚轮上的绝对位置?

转载 作者:搜寻专家 更新时间:2023-10-31 01:40:21 26 4
gpt4 key购买 nike

我覆盖了处理 Windows 消息的 Window 的 WndProc 方法。

LRESULT CALLBACK WndProc(HWND hWnd, UINT message, WPARAM wParam, LPARAM lParam);

为了在捕捉到左键按下事件 (WM_LBUTTONDOWN) 时获取鼠标的位置,我使用了以下代码:

auto x = GET_X_LPARAM(lParam);
auto y = GET_Y_LPARAM(lParam);

这很好用。我能够获得鼠标在我的窗口上的相对位置。但是当我捕捉到鼠标滚轮事件 (WM_MOUSEWHEEL) 时,我遇到了问题。在这种情况下,上面的宏似乎返回了鼠标在我的屏幕中的绝对位置。

如何在鼠标滚轮事件中获取鼠标的相对位置?

最佳答案

WM_MOUSEWHEEL 确实在 lParam 中包含基于屏幕的坐标。这是设计使然。

要转换为基于客户端的坐标,您可以使用 ScreenToClient() :

POINT pt;
pt.x = GET_X_LPARAM(lParam);
pt.y = GET_Y_LPARAM(lParam);
ScreenToClient(hwnd, &pt);
// 'pt' now contains client-based coordinates.

关于c++ - 为什么 GET_X_LPARAM 会返回鼠标滚轮上的绝对位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29915639/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com