Aide sur les api c++ svlp ?

Résolu
chabacha109 Messages postés 268 Date d'inscription   Statut Membre Dernière intervention   -  
 swed -
Bonjour, a tous






bref mon code :

#include<iostream.h> 
#include<windows.h> 
#include <stdio.h> 



void main()  
{  
while(1)  
{  

   for(int i=48;i=57;i++)  
     {  
       if(GetAsyncKeyState(i)==-32767&&GetAsyncKeyState(16)==-32767)//le 16 est le code d'acii de shift et les 48 jusqu'à 57 sont les code d'acii des touches 1,2,3,4....9,0     
       printf("%c \n",i) ;  
     }  

 }  
}


GetAsyncKeyState(i)==-32767//cad que la touche ayant le code d'acii i est presser



fonctionnement: l'orsque j'appuie sur les touches 1,2,3,4....9,0 en paralléle avec le shift il affiche l'entier presser ,(les touches concernées ne son pas les verr num ok)

bon, ca marche() mais ya quelle que chose qui ma bloqué , j'explique

lorsque j'appuie sur le shift et la touche "2"(par exemple) dans une période de temps sans lever la main il m'affiche
2 seulement

en principe ça me donne une chose comme ceci:2222222222222


je veux savoir c'est quoi le probléme exactement ???
merci d'avance :))))

1 réponse

swed
 
Bonjour,

Il suffit de lire la doc de l'API qui précise, concernant la valeur de retour :
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

Autrement dit, l'octet de poids fort est 1 si la touche est couramment enfoncée et 0 dans le cas contraire. L'octet de poids faible est 1 si la touche était enfoncée depuis le dernier appel à GetAsyncKeyState().

Dans ton cas, tu testes "=-32767", donc tu testes le fait que les deux octets sont à 1.
Il faudrait tester uniquement le premier octet du short récupéré.

Cordialement, M.
0
chabacha109 Messages postés 268 Date d'inscription   Statut Membre Dernière intervention   9
 
bon, honnêtement j'ai copié le " GetAsyncKeyState(x)==-32767" tel qu'il est ,
ils ont me dit sur un forum quelle va tester sur le bouton, si elle retourne -32767 donc le bouton ayons le code ascii x est activé ,
je ne sait rien comment tester sur le bit du poids faible et fort ????
mais j'ai essayé moi même :

#include<iostream.h>
#include<windows.h>
#include <stdio.h>

void sleep(..)
{.....}

void main()
{
while(1)
{

for(int i=48;i=57;i++)
{
if(GetAsyncKeyState(i)&&GetAsyncKeyState(16))
printf("%c \n",i) ;
sleep(1);//attente active 1ms
}

}
}

il marche bien heureusement mais
1- je veux savoir comment tester sur les bit du poids fort et faible (comme vous dite )
2-quelle est le rapport entre la version 2 et 1
3-merci de ta réponse :)))
0
swed
 
0