Page 1 sur 1

EventwParam y fait rien qu'a m'embeter [Résolu]

Publié : sam. 09/févr./2008 18:33
par Kwai chang caine
Bonjour à tous

Je voudrais detecter l'appui sur plusieures touches en meme temps.
Par exemple, si j'appuie sur D et apres dur 2, j'aimerais avoir dans le debugger "D2" et qu'une seule fois et ceci avec toutes les touches du clavier.

Comme je sais que certaines touches ne sont accessible que par EventwParam, j'ai donc utilisé cette merveille.
Mais le probleme, c'est avec le pavé numérique, il me sort des lettres 8O

Qu'est ce que j'ai encore cassé :oops:

Code : Tout sélectionner

OpenWindow(1, x, y, LargeurFenetre, HauteurFenetre, "", #PB_Window_ScreenCentered|#PB_Window_SystemMenu) 

Repeat  
  
 Evenement = WaitWindowEvent () 
  
 If Evenement = #WM_KEYDOWN 
  
  ToucheAppuyer$ = Chr(EventwParam())
  
  If Not FindString(Combinaison$, ToucheAppuyer$, 1)
   Combinaison$ + ToucheAppuyer$
   Debug combinaison$
  EndIf
     
 ElseIf Evenement = #WM_KEYUP
 
  Combinaison.s = ""
 
  EndIf
 
Until Evenement = #PB_Event_CloseWindow
Merci de votre aide

Publié : sam. 09/févr./2008 18:50
par Stefou
Salut Kwai

Il ne me semble pas que EventwParam() renvoie le code ASCI de la touche. Je pense qu'il renvoie le numéro de la touche ! Cela tombe bien pour les lettres de A à Z et encore, il ne renvoie que les majuscules. C'est à toi de faire une table de correspondance.

Je n'est pas encore coder cela !

Exemple de début :

Code : Tout sélectionner

Procedure.s Key(num)
select num
    case 65 to 90
         procedurereturn chr(num)
    case 96 ;num 0 du pav
         procedurereturn "0"
.....
endselect
endprocedure

Publié : sam. 09/févr./2008 18:56
par nico
Oui Stefou à raison le message #WM_KEYDOWN ne renvoie pas un code qui correspond à la table ASCII sauf pour quelques lettres.

Si tu veux pas t'embêter, remplace par #WM_CHAR

Publié : sam. 09/févr./2008 19:03
par Kwai chang caine
@STEFOU
D'accord pour le retour des touches, c'est trompeur

@Nico
Merci beaucoup, ça marche nickel avec le #WM_CHAR

Merci à tous les deux
J'y retourne jusqu'au prochain obstacle