Bip lors de l'utilisation du clavier sur une picture box

Résolu
Signaler
Messages postés
9
Date d'inscription
samedi 4 janvier 2003
Statut
Membre
Dernière intervention
14 janvier 2005
-
Messages postés
9
Date d'inscription
samedi 4 janvier 2003
Statut
Membre
Dernière intervention
14 janvier 2005
-
Bonjour,



J'ai une appli programmée avec l'api win32 avec un
hook sur le clavier qui marche lorsque que le focus est sur une picture
box.

Le problème c'est que lorsque que la touche
appuyée est une lettre ou un chiffre, windows emet un bip avant
d'exécuter ma commande.

J'aimerais donc savoir comment empecher l'emmission de ce bip ?

6 réponses

Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
Un hook.

if(HIWORD(lParam) <= 0xC000) {
KeyDownPrincipal(wParam);
return 1;
}

ainsi tu ne retransmets pas la touche.

ciao...
BruNews, MVP VC++
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
Salut,
Mets le code de ta procédure de hook ici et on trouvera d'où vient le problème.
Messages postés
21041
Date d'inscription
jeudi 23 janvier 2003
Statut
Modérateur
Dernière intervention
21 août 2019
30
Comment ça 'avant' ? Si tu interceptes les touches dans le hook, devrait suffire de ne pas faire suivre la touche en retournant 1 au niveau de la KeyboardProc() du hook.

ciao...
BruNews, MVP VC++
Messages postés
1910
Date d'inscription
vendredi 18 juin 2004
Statut
Modérateur
Dernière intervention
14 novembre 2014
13
C'est vrai. J'ai demandé de voir le code ici pour voir s'il ne s'agit pas d'une procédure de sous-classement car beaucoup de gens confondent le hook et le sous-classement. Le problème du bip se pose quand on ne traite pas le message WM_CHAR dans la procédure de sous-classement.
Messages postés
9
Date d'inscription
samedi 4 janvier 2003
Statut
Membre
Dernière intervention
14 janvier 2005

Voila la fonction avec laquelle j'intercepte l'utlisation du clavier :



LRESULT CALLBACK GetMsgProc(int nCode, WPARAM wParam, LPARAM lParam)

{

if(nCode != MSGF_DIALOGBOX) goto defRet;



if (HIWORD(lParam) <= 0xC000) KeyDownPrincipal(wParam);



defRet:

return (CallNextHookEx(eHhk, nCode, wParam, lParam));

}





En effet je n'ai aucune idée s'il s'agit d'un hook ou d'un sous classement...


Messages postés
9
Date d'inscription
samedi 4 janvier 2003
Statut
Membre
Dernière intervention
14 janvier 2005

Effectivement ca marche !



Merci beaucoup