2011-01-10 3 views
9

Ich versuche ein Spiel für Mac OS X zusammenzustellen, das eine Menge schneller Action beinhaltet und den Mauszeiger herumschleudert. Wenn der Benutzer im Fenstermodus spielen möchte, möchte ich den Cursor in das Innere des Fensters sperren, um zu vermeiden, dass Programme in der Hitze des Gefechts versehentlich geändert werden (offensichtlich wird es sich selbst abbrechen, wenn der Benutzer Programme ändert oder Treffer für das Pausenmenü.)Wie kann ich den Cursor unter Mac OS X in das Innere eines Fensters sperren?

Unter Windows kann dies einfach mit ClipCursor() erreicht werden. Ich kann unter Mac OS X keine Entsprechung finden. Gibt es eine?

+0

Siehe ganz ähnliche Frage [SO 4642867] (http://stackoverflow.com/questions/4642867/how-can-i-lock-the-cursor-to-the-inside-of- a-window-on-linux), die dieselbe Frage für Linux stellen. –

Antwort

7

Werfen Sie einen Blick auf CGWarpMouseCursorPosition, CGAssociateMouseAndMouseCursorPosition und CGGetLastMouseDelta (Teil von ApplicationServices).

Siehe http://developer.apple.com/library/mac/#documentation/GraphicsImaging/Reference/Quartz_Services_Ref/Reference/reference.html

+0

Während dies wirklich sehr vielversprechend aussieht, habe ich einige schreckliche Probleme mit der Cursoraktualisierungsrate. SetMouseCoalescingEnabled war nicht hilfreich. Ich werde mehr daran arbeiten, und wenn ich herausfinde, was los ist, werde ich posten, aber im Moment kann ich mit diesen Funktionen nichts Brauchbares finden. – ZorbaTHut

+0

Haben Sie das jemals herausgefunden? Das gleiche Problem jetzt beim Spielen von Spielen im Fenstermodus auf Mac. – jtanman