В настоящее время я портирую приложение (или, если быть более точным, VST-плагин) из Windows в OSX. Я немного новичок в программировании OSX, но я использую Cocoa NSView, добавленный в окно Carbon (которое я получаю от хоста), используя HICocoaCreateView.
В любом случае ... Внутри этого представления я хочу получить события mouseMoved и mouseDragged, но при перетаскивании я также хочу получить эти события, даже когда мышь покидает мой NSView (и также родительское окно), но я просто не могу кажется, чтобы это произошло.
В Windows я бы сделал SetCapture для mouseDown, чтобы получить все события мыши на некоторое время. Самая близкая вещь, которую я нашел в Какао, это «addGlobalMonitorForEventsMatchingMask», но это только 10.6+, и мне трудно поверить, что это было невозможно сделать до этого. (В конце концов, это то, что обычно используется для перетаскиваемых компонентов, таких как полосы прокрутки и т. Д.)
Это сводит меня с ума!
UPDATE:
Также есть нечто, называемое CGEventTapCreate, которое, насколько я могу судить по скудным документам, похоже на addGlobalMonitor ... но в Carbon. Я не понял, как именно углерод и какао связаны друг с другом и что работает где. Можно ли его использовать, хотя мой основной материал - какао? (Окно, которое я получаю от хозяина, может быть как Какао, так и Углеродом. Это действительно беспорядок.)