我目前正在将一个应用程序(或者更准确地说,一个 VST 插件)从 Windows 移植到 OSX。我对 OSX 编程有点陌生,但我正在使用 HICocoaCreateView 添加到 Carbon 窗口(我从主机获得)的 Cocoa NSView。
Anywhoo ...在此视图中,我想获取 mouseMoved 和 mouseDragged 事件,但是在拖动时,即使鼠标离开我的 NSView(以及父窗口),我也想获取这些事件,但我似乎无法做到这发生了。
在 Windows 上,我会在 mouseDown 上执行 SetCapture 以获取所有鼠标事件一段时间。我在 Cocoa 中找到的最接近的东西是“addGlobalMonitorForEventsMatchingMask”,但这只是 10.6+,我很难相信这是在此之前不可能做到的事情。(毕竟,这通常用于滚动条等可拖动组件。)
这快把我逼疯了!
更新:
还有一个叫做 CGEventTapCreate 的东西,据我从稀缺的文档中可以看出,它类似于 addGlobalMonitor... 但在 Carbon 中。我还没有完全了解 Carbon 和 Cocoa 是如何相互关联的,以及在哪里起作用。即使我的主要东西是可可,它也可以使用吗?(我从宿主那里得到的窗口可以是Cocoa和Carbon,真的是一团糟。)