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

  FORUM HardWare.fr
  Programmation
  C++

  [VC++] associer les flèches du clavier à des boutons

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[VC++] associer les flèches du clavier à des boutons

n°602475
HAL
Pas un jour sans un but
Posté le 05-01-2004 à 11:07:15  profilanswer
 

je programme une interface de navigation toute simple sous visual C++
j'ai dans cette interface 4 boutons flèches de direction et un bouton validation
 
je souhaite que lorsque l'on click sur flèche droite ou que l'on appuie sur la flèche droite du clavier, dans les 2 cas soit appelé mon this->OnClick
 
d'où ma question
comment fait on pour associer la touche flèche droite du clavier à un bouton ?
 
PS : pour l'instant je mets &Droite dans caption de mon CButton mais cette solution ne me satisfait pas, ce n'est pas pratique

mood
Publicité
Posté le 05-01-2004 à 11:07:15  profilanswer
 

n°602478
chrisbk
-
Posté le 05-01-2004 à 11:10:27  profilanswer
 

ben tu recup le OnKeyPressed (ou dans le genre) en checkant pour VK_LEFT et la tu apelles ta petite fonction,
 
(quoique soudain je me demande si ca marche avec les dialogs box ca)

n°602484
skeye
Posté le 05-01-2004 à 11:14:31  profilanswer
 

Exemple con (ya p-e mieux):
 

Code :
  1. BOOL CMonDialogueDlg::OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags)
  2. {
  3. switch(nChar)
  4. {
  5.  case VK_RIGHT:
  6.   AfxMessageBox("flèche droite" );
  7.  default:
  8.   AfxMessageBox("ah ben non" );
  9. }
  10. CDialog::OnKeyUp(nChar, nRepCnt, nFlags);
  11. }


---------------
Can't buy what I want because it's free -
n°602513
HAL
Pas un jour sans un but
Posté le 05-01-2004 à 11:35:36  profilanswer
 

faut il que je rajoute un  
afx_msg void OnKeyUp( UINT nChar, UINT nRepCnt, UINT nFlags );  
quelque part ? car je n'ai pas le message OnKeyUp dans le classwizard de mon CDialog

n°602517
chrisbk
-
Posté le 05-01-2004 à 11:36:18  profilanswer
 

ouais c'est ce que je craignais....
chaipas trop comment faire pour une CDialog...

n°602526
skeye
Posté le 05-01-2004 à 11:39:42  profilanswer
 

Dans mon exemple CMonDialogueDlg est un CDialog...j'ai repompé ça à-partir d'une appli dalog based.


---------------
Can't buy what I want because it's free -
n°602544
HAL
Pas un jour sans un but
Posté le 05-01-2004 à 11:46:50  profilanswer
 

bizarre car onKeyUp le compilo ne connais pas
il connais OnKeyUp  
 
et si je le met dans le .h, c'est bien sympa mais il ne l'appel jamais
je n'arrive pas à chopper l'event onkeyup

n°602549
HAL
Pas un jour sans un but
Posté le 05-01-2004 à 11:49:09  profilanswer
 

en plus CDialog hérite de CWnd qui contient OnKeyUp
pourquoi il ne me le propose pas :cry:

n°602551
skeye
Posté le 05-01-2004 à 11:51:41  profilanswer
 

Tu as p-e besoin d'utiliser PreTranslateMessage pour que le message soit bien récupéré par ta fenêtre?
 
Dans cette appli je fais comme ça :

Code :
  1. BOOL CMonDialogueDlg::PreTranslateMessage(MSG *pMsg)
  2. {
  3. if(pMsg->message == WM_KEYUP)
  4. {
  5.   pMsg->hwnd = this->m_hWnd;
  6. }
  7. return 0;
  8. }


---------------
Can't buy what I want because it's free -
n°602569
HAL
Pas un jour sans un but
Posté le 05-01-2004 à 12:04:33  profilanswer
 

pMsg->hwnd = this->m_hWnd; est bien appelé lors d'un Key_Up, la fin du tunnel est donc proche
par contre aucun appel de onKeyUp
 
pour faire simple, skeye  sais tu si je peux directement récupérer le code touche dans preTranslateMessage ?

mood
Publicité
Posté le 05-01-2004 à 12:04:33  profilanswer
 

n°602577
skeye
Posté le 05-01-2004 à 12:10:54  profilanswer
 

hal a écrit :

pMsg->hwnd = this->m_hWnd; est bien appelé lors d'un Key_Up, la fin du tunnel est donc proche
par contre aucun appel de onKeyUp
 
pour faire simple, skeye  sais tu si je peux directement récupérer le code touche dans preTranslateMessage ?


Je ne pense pas...c'est bizarre que ton OnKeyUp ne soit pas appelé, puisque tu spécifies bien le handle de ta fenêtre comme cible du message...:??:
Je ne vois rien d'autre dans mon appli pour ça...
 
Tu as bien ça:

Code :
  1. afx_msg void OnKeyUp(UINT nChar, UINT nRepCnt, UINT nFlags);


en protected dans la déclaration de ton CDialog?


---------------
Can't buy what I want because it's free -
n°602583
chrisbk
-
Posté le 05-01-2004 à 12:19:43  profilanswer
 

ben si il l'a rajouté a la main j'imagine qu'il faut aussi bricoler la message map non ?

n°602586
skeye
Posté le 05-01-2004 à 12:21:55  profilanswer
 

chrisbk a écrit :

ben si il l'a rajouté a la main j'imagine qu'il faut aussi bricoler la message map non ?


très juste!
ajouter

Code :
  1. ON_WM_KEYUP()


Dans la messagemap...après je vois vraiment plus rien!


---------------
Can't buy what I want because it's free -
n°602704
HAL
Pas un jour sans un but
Posté le 05-01-2004 à 13:54:01  profilanswer
 

en effet ça marche nickel,  
merci à vous  :jap:


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

  [VC++] associer les flèches du clavier à des boutons

 

Sujets relatifs
[Delphi] Effacer des boutons?Connaitre l'état des boutons de la souris sur l'écran entier
Execution d'un process via Java : Comment "simuler" le clavier ???conception : éditeurs de diagrammes "boîtes-flèches"
rafraichissement d'un tableau dynamique a l'aide de boutons[C++] Win32 boutons image et image de fond
[C]Comment recuperer un caractere des qu'il est saisi au clavier?[PHP/JS] Associer un fichier à une variable PHP
[PHP] Afficher la valeur des boutons radioformulaire - deux boutons submit >> touche entrée
Plus de sujets relatifs à : [VC++] associer les flèches du clavier à des boutons


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