Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1620 connectés 

  FORUM HardWare.fr
  Programmation
  C

  probleme minuscules majuscules

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

probleme minuscules majuscules

n°2219807
xfreekingx
Posté le 16-02-2014 à 09:36:26  profilanswer
 

Bonjours a tous,
 
 Je cherche a donner un evenement different a une meme touche du clavier. par exenple, un evenement different a 'a' et 'A'. j ai utiliser :
 
if(GetAsyncKeyStat(65) == -3.......)  vie -= 30;
if(GetAsyncKeyStat(96) ==-3........)  vie -=50;  // je ne suis pas sure ici de la valeur en Ascii mais ce n ai pas le sujet du probleme.
 
en faite, avec ce code quand je clic sur 'a', l effet du 'A' se produit
En realite le programme ne prend en compte que la premiere ligne de code referent a une touche. Si je met le code ascii de 'a' en premier, quand je clique sur 'A' sa donne l effet du 'a'.
 
 Pouriez vous m aider en me donnant une methode pour que le programme differencit les majuscules et minuscules?  
Merci

mood
Publicité
Posté le 16-02-2014 à 09:36:26  profilanswer
 

n°2219818
olivthill
Posté le 16-02-2014 à 14:18:50  profilanswer
 

1. Les points de suspensions montrent que le programme est incomplet.
Et ce n'est pas GetAsyncKeyStat, mais GetAsyncKeyState avec un "e" à la fin.
Avec un code trop parcellaire et faux, ce n'est pas facile de faire une analyse et de vous aider.
 [:carbon copy:4]  
2. Sous Windows, pour récupérer la saisie d'une lettre au clavier, l'usage n'est pas d'utiliser GetAsyncKeyState, mais de capturer le message WM_CHAR dans la fonction de gestion la boucle des messages ou l'équivalent en C++.
 [:roger95]  
3. GetAsyncKeyState a besoin en paramètre d'un virtual key code. Ils sont indiqué sur la page http://msdn.microsoft.com/en-us/li [...] s.85).aspx
Il y a le code pour le "A" majuscule, qui est bien 65 ou 0x41. Mais par contre, il n'y a pas le code pour le "a" minuscule. 96 est équivalent à 0x60, et pour cette valeur Microsoft note "Numeric keypad 0 key". Ca n'a rien à voir avec le "a" minuscule. D'ailleurs, il n'y a nul part le "a" minuscule dans la liste des virtual key code. C'est normal parce que c'est la même touche pour le "A" et pour le "a". C'est l'une des raisons pour lesquels, il ne faut pas utiliser GetAsyncKeyState, mais gérer WM_CHAR.
 [:hockeyy:3]  
4. Tester la valeur -3 n'est pas correct. La documentation dit "If the function succeeds, the return value specifies whether the key was pressed since the last call to GetAsyncKeyState, and whether the key is currently up or down. If the most significant bit is set, the key is down, and if the least significant bit is set, the key was pressed after the previous call to GetAsyncKeyState. However, you should not rely on this last behavior".
 
Personnellement, je n'ai jamais eu besoin de la fonction GetAsyncKeyState en 20 ans de programmation Windows.
Je gère WM_CHAR ou WM_KEYDOWN, et parfois je complète l'information avec un GetKeyState pour savoir si une touche spéciale est active en même temps, par exemple pour la combinaison Control+Insert.

n°2219822
xfreekingx
Posté le 16-02-2014 à 15:35:46  profilanswer
 

Merci beaucoup olivthill pour votre réponse plus que détaillée qui va m’être d'une grande aide.
Je vais a présent me pencher sur WM_CHAR, GetKeyState et WM_KYDOWN pour résoudre mon problème.
Merci.
 
 
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  probleme minuscules majuscules

 

Sujets relatifs
Problème avec $_POST (Linux)Problème de tableau excel
Problème avec compteur[FPDF] Problème de disposition Multicell après un Page Break
Problème avec compteur + boucleprobleme de communication client server (socket)
[cakephp] problème d'affichage[Probleme]Forum
Problème enregistrement canvas avec photo en fond (security error)[VB.NET] Problème de majuscules / minuscules
Plus de sujets relatifs à : probleme minuscules majuscules


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR