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
@+
0
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++
0
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...
0
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).
0

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é. ;)
0
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...
0
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.
0
Rejoignez-nous