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.

Était-ce utile?

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;

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top