gpt4 book ai didi

macos - Mac鼠标坐标!=窗口框架?

转载 作者:行者123 更新时间:2023-12-04 06:39:06 31 4
gpt4 key购买 nike

这是我的问题。希望我能解释得足够好。我的桌面是 2x2,显示器尺寸为 (2048,1152)。

我正在尝试使用辅助设备来生成鼠标点击。我的鼠标点击应该在坐标 (1600,1407) 上(在“平移按钮”上),假设 (0,0) 是我整个桌面区域的左上角。它将鼠标移动到正确的位置,但是当我执行 CGREctContainsPoint() ) 它给了我 NO因此。

我的弹出窗口给出的矩形(框架)的原点是(1558,-406)?所以 CGREctContainsPoint() 的数学是正确的,但窗口的框架应该包含该点。 (甚至更多,因为我可以在窗口上看到鼠标光标。)

为什么?是因为它是一个子窗口吗? (我的桌面中心在图像的中心,每个窗口都是不同的背景颜色。)
center of my desktop is in center of the image, each window is a different background color.

我尝试过使用以下内容:

NSRect pFrame = [_popupWindow frame];
NSPoint pOrigin = pFrame.origin;
NSPoint correctedOrigin = [[_popupWindow parentWindow] convertBaseToScreen:pOrigin];
pFrame.origin = correctedOrigin;

但这给了我:
... Rect {{1488, -1529}, {439, 306}}, Point {1556.17, 1314.76}, InRect 0
结果,它仍然没有将点(我可以看到它悬停在弹出窗口上)放在矩形中。

为什么我的弹出窗口的矩形和点甚至不一样?我怎样才能让它们在同一个坐标“空间”中?

谢谢,

最佳答案

在 Mac 上,(0,0) 位于左下角。你如何获得鼠标坐标?窗口的框架将位于屏幕坐标中,因此如果该点位于其基本坐标中,则需要调用 point = [window convertBaseToScreen:point];在比较之前。

这里有两种在 cocoa 中获取鼠标位置的方法:

NSPoint location = [NSEvent mouseLocation];
//already in screen coordinates, no need to convert

或者
//window is a variable containing your window
NSPoint location = [window mouseLocationOutsideOfEventStream];
//convert to screen coordinates
location = [window convertBaseToScreen:location];

关于macos - Mac鼠标坐标!=窗口框架?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4492461/

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