gpt4 book ai didi

c++ - Qt grabWindow 坐标从 GetCursorPos 和 GetWindowRect 转移

转载 作者:行者123 更新时间:2023-11-28 03:57:51 24 4
gpt4 key购买 nike

在 Qt 中,当我使用 QPixmap::grabWindow(hwnd,x,y,h,w) 函数时,与使用 windows api 函数 GetCursorPos 和 GetWindowRect 的坐标相比,坐标略有偏移。

即(0,0) 从 GetCursorPos 和 GetWindowRect 的角度来看,位于窗口顶部工具栏的最左上方。

但是 QPixmap::grabWindow 的 (0,0) 更“内部”(即忽略窗口框架)。

如何使这两个坐标一致?特别是因为用户可能对窗框有不同的厚度?

最佳答案

我同意 Kotti 的观点……如果您使用的是 Qt,请只使用 Qt 调用。您或许可以用 QCursor::pos() 替换对 GetCursorPos() 的调用,用 window()->geometry() 替换对 GetWindowRect() 的调用。

就是说,如果您必须直接调用 Windows API,您可以动态计算两个坐标系之间的偏移量,方法是使用相同的参数调用每个 API 中的等效函数,并且相互减去结果。然后,您可以根据需要使用该增量从一个坐标系转换到另一个坐标系。这会奏效,但会很痛苦,所以只有在绝对必要时才这样做。

关于c++ - Qt grabWindow 坐标从 GetCursorPos 和 GetWindowRect 转移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2695548/

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