我正在從Windows向OSX移植一個應用程序(或者更準確地說,一個VST插件)。我對OSX編程有點新,但我使用HICocoaCreateView將Cocoa NSView添加到Carbon窗口(我從主機獲得)。在我的NSView的窗口外部獲取mouseMoved/mouseDragged
Anywhoo ...這個視圖裏面我想要mouseMoved & mouseDragged事件,但拖動時,我也想要獲得這些事件,即使當鼠標離開我的NSView(也是父窗口),但我只是'似乎使這發生。
在windows上,我會在mouseDown上做一個SetCapture來獲取所有鼠標事件一段時間。我在Cocoa找到的最接近的東西是「addGlobalMonitorForEventsMatchingMask」,但這只是10.6+,我很難相信這是在此之前無法做到的事情。 (畢竟,這是通常用於可拖動組件的東西,如滾動條等)
這讓我瘋狂!
UPDATE:
有一種叫做CGEventTapCreate以及其中,據我可以從稀缺文檔來講,類似於addGlobalMonitor ...但在碳。我還沒有掌握Carbon和Cocoa如何與彼此相關以及在哪裏工作。即使我的主要東西是可可,它是否可用? (窗口我從主機獲得既可以是可可和碳。這真是所有一團糟。)
感謝您的澄清。我認爲這實際上比所提議的解決方案更有幫助,但事件點擊確實指出了我的正確方向。我實際上重拍了我的代碼,不使用HICocoaCreateView,因爲我隨機崩潰時遇到麻煩,而且使用我的新代碼,即使沒有事件點擊,我也會得到我想要的行爲:)) – Dentoid 2011-06-20 15:41:42