Coordonnées (X-Y) dans un msgbox

guitoulefoux Messages postés 152 Date d'inscription lundi 24 mars 2003 Statut Membre Dernière intervention 6 janvier 2009 - 9 sept. 2003 à 16:16
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 - 9 sept. 2003 à 18:42
Bonjour,
j'utilise le code suivant pour récupérer les coordonnées de ma sourie (pt.x et pt.y):

POINT pt;
GetCursorPos(&pt);

Mais je n'arrive pas a inscrire pt.x et pt.y dans un messagbox.
Je pense qu'il faut convertir mes coordonnées en texte mais je sais pas comment (je suis débutant).

Pourriez vous m'aider SVP..... Merci ;)

7 réponses

Anacr0x Messages postés 515 Date d'inscription dimanche 25 mai 2003 Statut Membre Dernière intervention 27 avril 2006 2
9 sept. 2003 à 16:23
pt.x et pt.y sont des long, donc je pense que tu peut les convertir avec la fonction _ultoa()

Si la fonction ne les accepte pas, fait un cast
@+
guitoulefoux Messages postés 152 Date d'inscription lundi 24 mars 2003 Statut Membre Dernière intervention 6 janvier 2009
9 sept. 2003 à 17:53
ReBonjour et merci pour ta réponse,

J'ai bien regardé sur ce site, mais j'ai pas trouvé de solution.
D'apres mes recherche et tes indications je devrais y arriver avec cast mais j'arrive pas bien a l'utiliser.
Pourrais tu me donner un exemple stp.

MERCI :)

PS: j'utilise DevC++
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
9 sept. 2003 à 18:04
char szbuff[24];
char *c = szbuff;
ultoa(pt.x, szbuff, 10);
while(*c) c++; // sur ZERO final
*c = 32; // un espace
ultoa(pt.y, c+1, 10);
MessageBox(0, szbuff, "COORD", 0);
BruNews, ciao...
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
9 sept. 2003 à 18:08
Salut,
Tu peux utiliser itoa() ou sprintf().
sprintf est plus pratique mais plus lent, il faudra faire un truc du genre:
char szText[256];
POINT pt;
GetCursorPos(&pt);
sprintf(szText, "%d - %d", pt.x, pt.y);
MessageBox(0, szText, "Coords", 0);

sinon avec itoa() il faut placer un pointeur sur la chaine et l'avancer:

char szText[256];
char * c = szText;
POINT pt;
GetCursorPos(&pt);
itoa(pt.x, c, 10);
c = szText+strlen(szText);*c++ 32; *c++ '-'; *c++ = 32;
itoa(pt.y, c, 10);
MessageBox(0, szText, "Coords", 0);

Et pour Anacrox, itoa (int to a) fait comme ultoa (unsigned long to a), sauf qu'il gere aussi les nombres signés (puisque int).

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
guitoulefoux Messages postés 152 Date d'inscription lundi 24 mars 2003 Statut Membre Dernière intervention 6 janvier 2009
9 sept. 2003 à 18:31
Merci beaucoup pour vos réponses ;) (rapides et precises)

J'ai pratiquement tout compris dans le code sauf :
- szText[256]; (c quoi 256 ?)
- itoa(pt.x, c, 10); (c quoi 10 ?)

Je vous rassure, je demande pas un cours de c++. Ceci sera ma derniére question pour se sujet.

@+ et encore merci pour votre rapidité. ;)
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
9 sept. 2003 à 18:39
la base, 2 pour binaire, 16 pour hexa.
Bouquin ou msdn pour le reste.
BruNews, ciao...
cs_aardman Messages postés 1905 Date d'inscription mercredi 22 janvier 2003 Statut Membre Dernière intervention 17 septembre 2012 3
9 sept. 2003 à 18:42
Salut,
szText[256];
Je déclare un tableau de 256 char. (c'est beaucoup trop vu que j'utiliserai jamais plus de 10 char, mais bon, mauvaise habitude :).

itoa(pt.x, c, 10);
10 c'est la base avec laquelle le nombre va etre ecrit dans la chaine. Tu peux mettre 16 si tu veux tes coordonnées en hexadécimal, par exemple.
Rejoignez-nous