guitoulefoux
Messages postés152Date d'inscriptionlundi 24 mars 2003StatutMembreDernière intervention 6 janvier 2009 13 sept. 2003 à 17:31
Bonjour,
- oui je pense a ascii (le nb de la lettre) et "y" est une variable
-oui y est un int
-Et non a mon grand desespoire char x=y; ne fonctionne pas.
Le message d'erreur est le suivant:
"passing `int' to argument 2 of `MessageBoxA(HWND__ *, const CHAR *, const CHAR *, unsigned int)' lacks a cast"
Anacr0x
Messages postés515Date d'inscriptiondimanche 25 mai 2003StatutMembreDernière intervention27 avril 20062 13 sept. 2003 à 17:31
-------------------------------
Réponse au message :
-------------------------------
> Quand tu di "y est en ascii" tu pense au code ascii (nb de la lettre) de la lettre y ?
>
> Si oui, y est un int et je croi que char x=y; devrait marcher
>
> -------------------------------
> Réponse au message :
> -------------------------------
>
> > Bonjour,
> >
> > J'ai encore besoin de vos lumieres (et ca sera pas la derniére)
> >
> > 1- j'utilise une boucle pour récupérer les actions clavier:
> > if(GetAsyncKeyState(y)==-32768){...} (cool ca marche ;))
> >
> > 2- "y" qui est en ascii je le converti en lettre:
> > z=(char)y; (je vous cache pas que la je pense faire une connerie)
> >
> > 3- je fais apparaitre MessageBox:
> > MessageBox(0, z, "lettre", 0); (et la bien sure c un cataclysme y'a rien qui fonctionne).
> >
> > Pourriez vous m'aider svp .... merci.
>
Anacr0x
Messages postés515Date d'inscriptiondimanche 25 mai 2003StatutMembreDernière intervention27 avril 20062 13 sept. 2003 à 17:39
Effectivement, ya plusieur pb, mais de tte facon, je crois que ca ne marchera pas, ce n'est pas le code ascii utilisé ici, mais les VirtualKeyCode, c différen et les code sont pas les même ! Donc tu n'aura pas la bonne lettre si tu par du principe qu'il s'agit de code ascii
Je regarde ca et si j'ai du nouveau je te prévien
Vous n’avez pas trouvé la réponse que vous recherchez ?
cs_aardman
Messages postés1905Date d'inscriptionmercredi 22 janvier 2003StatutMembreDernière intervention17 septembre 20123 13 sept. 2003 à 17:53
Salut,
Ben comment tu veux que MessageBox sache combien de caractere elle doit ecrire ? elle est pas medium :)
En fait en C les chaines de caracteres sont terminées par le caractere NULL, le zéro final.
MessageBox copie donc toute ta chaine jusqu'au caractere 0.
Dans ton exemple, pas de caractere 0, donc forcement plantage.
Voila comment je ferais ce que tu veux faire:
cs_Chouchou182
Messages postés252Date d'inscriptionvendredi 13 juin 2003StatutMembreDernière intervention25 avril 20111 13 sept. 2003 à 18:05
Bijourr!
Anacr0x: char z[1] réserve de la mémoire pour 1 char (soit 1 octet) donc z[1] n'existe pas! => erreur!
Ensuite le compilo donne la syntaxe de MessageBox avec l'arg pour le txt de la MsgBox : char* donc le problème venait du fait qu'un char n'est pas un char*
char est un caractère
char* est une chaîne de caractères
La méthode de Anacr0x (dsl si j'écris mal son nom) marche donc en changeant char z[1] par z[2]
guitoulefoux
Messages postés152Date d'inscriptionlundi 24 mars 2003StatutMembreDernière intervention 6 janvier 2009 13 sept. 2003 à 18:28
Merci pour votre aide je pense que je suis presque a la fin.
Cependant je me permet de mettre un bout de mon code pour correction (car ca marche po):
Je voudrais faire une boucle qui detecte et affiche les touches sur lesquelles on appui.
et quand on appuis que ESPACE tout s'arrete.
- quand tu utilise GetAsyncKeyState, pas besoin de mettre = 32768. GetAsyncKeyState retourne un truc different de 0 si la touche est enfoncée, sinon 0.
- Tu ne peux pas commencer a scanner les touches de 0 a 128, les touches "visibles" sont >32.