Cocoa: Obtention de la position actuelle de la souris sur l'écran
Question
Je dois obtenir la position de la souris sur l'écran sur un Mac en utilisant Xcode. J'ai un code qui est censé faire ça, mais je retourne toujours x et y 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 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é dans un CGPoint pour être utilisé avec une autre fonction, alors je dois obtenir ce soit en tant que coordonnées x, y ou traduire.
La solution 2
CGEventRef ourEvent = CGEventCreate(NULL);
point = CGEventGetLocation(ourEvent);
CFRelease(ourEvent);
NSLog(@"Location? x= %f, y = %f", (float)point.x, (float)point.y);
Autres conseils
code d'origine de l'auteur ne fonctionne pas car il / elle tente d'imprimer flotte 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 le faire.
Méfiez-vous mélanger l'environnement NS avec l'environnement CG. Si vous obtenez l'emplacement de la souris avec la méthode NS de mouseLocation puis utilisez vous ne CGWarpMouseCursorPosition (cgPoint) sera envoyé au point sur l'écran que vous attendiez. Les résultats de problèmes de CG en utilisant en haut à gauche comme (0,0) alors que NS utilise comme gauche en bas (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;