c++ - 如何在 Mac OSX 上的窗口客户端中获得真实的鼠标位置?

标签 c++ objective-c macos

当我使用这段代码时,我的 Y 鼠标位置值有误。返回值为(x, y+20)。

int Height = int [[Window contentView] frame].size.height;

int x = (int)[(NSEvent *)event locationInWindow].x;

int y = Height - (int)[(NSEvent *)event locationInWindow].y;

我认为Height是窗口的高度:`title bar + rect client.我想要 Height 的真实值;

最佳答案

您可以将坐标转换为 View 。

   - (void)mouseMoved:(NSEvent *)event
    {
        NSPoint locationInView = [self convertPoint:[event locationInWindow]
                                           fromView:yourView];
    }

确保获得某种事件(在我的示例中是鼠标事件)。确保它们已启用。

[window setAcceptsMouseMovedEvents:YES];

关于c++ - 如何在 Mac OSX 上的窗口客户端中获得真实的鼠标位置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43260579/

相关文章:

c++ - std::array to pointer 访问冲突错误

java - 从 C++ 代码运行 JVM 并设置类路径

Java 相当于 Objective C 方法作用域静态变量

iphone - 为什么我的 iPhone 应用程序的图标在构建后被划掉?

macos - NSCollectionView 不隐藏在 osx 中

c++ - 虽然循环不起作用!

c++ - 带有 *.in 文件的 Doxygen

iphone - 关于使用 Accelerate.framework 的问题

objective-c - 发布 UIAlertView 时的奇怪编码模式

objective-c - 为 OS X 实现 float 按钮 UI View 的最简单方法是什么