Cacao: Obtenir la position actuelle de la souris sur l'écran
J'ai besoin d'obtenir la position de la souris sur l'écran sur un Mac avec Xcode. J'ai du code qui le fait soi-disant Mais je renvoie toujours x et y comme 0:
void queryPointer()
{
NSPoint mouseLoc;
mouseLoc = [NSEvent mouseLocation]; //get current mouse position
NSLog(@"Mouse location:");
NSLog(@"x = %d", mouseLoc.x);
NSLog(@"y = %d", mouseLoc.y);
}
Qu'est-ce que je fais de mal? Comment obtenez-vous la position actuelle sur l'écran? En outre,en fin de Compte, cette position (enregistrée dans un NSPoint) doit être copiée dans un CGPoint pour être utilisée avec une autre fonction, donc j'ai besoin de l'obtenir soit en coordonnées x, y, soit en traduire ceci.
5 réponses
Le code d'origine de L'auteur ne fonctionne pas car il / elle tente d'imprimer flottant comme %d. le code correct serait:
NSPoint mouseLoc = [NSEvent mouseLocation]; //get current mouse position
NSLog(@"Mouse location: %f %f", mouseLoc.x, mouseLoc.y);
Vous n'avez pas besoin D'aller au carbone pour faire cela.
CGEventRef ourEvent = CGEventCreate(NULL);
point = CGEventGetLocation(ourEvent);
CFRelease(ourEvent);
NSLog(@"Location? x= %f, y = %f", (float)point.x, (float)point.y);
Attention à mélanger L'environnement NS avec L'environnement CG. Si vous obtenez l'emplacement de la souris avec la méthode NS mouseLocation, utilisez CGWarpMouseCursorPosition (cgPoint) vous ne serez pas envoyé au point sur l'écran que vous attendiez. Le problème résulte du fait que CG utilise top left as (0,0) tandis que NS utilise bottom left as (0,0).
La réponse à cette question dans Swift
let currentMouseLocation = NSEvent.mouseLocation()
let xPosition = currentMouseLocation.x
let yPosition = currentMouseLocation.y
NSLog(@"%@", NSStringFromPoint(point));
NSLog est vrai;