Probleme de gestion de clavier win32

Signaler
Messages postés
25
Date d'inscription
vendredi 14 février 2003
Statut
Membre
Dernière intervention
19 juillet 2012
-
Messages postés
25
Date d'inscription
vendredi 14 février 2003
Statut
Membre
Dernière intervention
19 juillet 2012
-
bonjour,

Alors voila je m explique , je fait un logiciel de mix audio tyoe mixman studion pour ceux qui connaissent ... le principe de ce soft est d attribue un sample audio a une touche de clavier pour jouer ensemble tout un tas de sample et faire des bo mix ;) .

Faisant du dx depuis 2 ans, je m etais dit qu il y avait suremment moyen de faire du win32 sans passer par direct input ( que je trouve relou ) et de n utiliser que directx pour l audio. donc je commence a faire ma boucle de msg windows etc, et pis bah la gros probleme :

ma reception des msg WM_KEYDOWN ET WM_KEYUP ne marche pas : je fais des case 'E' (par ex) et rien ne se passe je suis super decu ... voici donc ma boucle des msg :

LRESULT CALLBACK MainProc(HWND Dlg, UINT message, WPARAM wParam, LPARAM lParam)
{
int select;
// int clavier;
// char buff[500];
HWND liste = NULL;

switch ( message )
{
case WM_COMMAND:
select = LOWORD(wParam);
switch (select)
{
case IDEXIT:
file->final_close();
EndDialog(Dlg, 0);
return TRUE;
case PLAYQ:
if ( (file->Loading_File()) == 0 )
{
file->Playing_File();
SetDlgItemText( Dlg, TITLEQ, (LPCSTR)file->samplelist );
SetDlgItemText( Dlg, PLAYQ, (LPCSTR)"Running");
HWND liste = GetDlgItem( Dlg, LISTE);
SendMessage( liste, LB_ADDSTRING, 0, (LPARAM)file->samplelist);
}
return TRUE;
}
case WM_KEYDOWN:
switch ( wParam )
{
case 'E':
SendMessage( liste, LB_ADDSTRING, 0, (LPARAM)file->samplelist);
return TRUE;
}
case WM_KEYUP:
switch (wParam )
{
case 'E':
file->final_close();
EndDialog(Dlg, 0);
return TRUE;
}

default:
return FALSE;
}

}

5 réponses

Messages postés
1905
Date d'inscription
mercredi 22 janvier 2003
Statut
Membre
Dernière intervention
17 septembre 2012
3
Salut,
Les wParam des messages WM_KEYDOWN et WM_KEYUP ne contient pas le code ASCII de la touche, mais le Virtual-Key Code de celle ci.
Voir MSDN pour avoir la listes de ces codes.
Messages postés
509
Date d'inscription
samedi 28 juin 2003
Statut
Membre
Dernière intervention
3 août 2010

Utilise plutot WM_CHAR .
Messages postés
25
Date d'inscription
vendredi 14 février 2003
Statut
Membre
Dernière intervention
19 juillet 2012

ah ok merci ...

une derniere question :

avec WM_CHAR c un truc du style :

case WM_KEYDOWN :
switch ( wParam )
{
case WM_CHAR:
}

ou alors c un WM_CHAR sur UINT message ???
Messages postés
509
Date d'inscription
samedi 28 juin 2003
Statut
Membre
Dernière intervention
3 août 2010

oui comme tu le dis, c'est un WM_CHAR sur UINT message.
Messages postés
25
Date d'inscription
vendredi 14 février 2003
Statut
Membre
Dernière intervention
19 juillet 2012

bon ca y est ca marche ( oui je sais c long mais j etais parti en vacs sur une ile .... )

le truc c ke moi je veux joiuer du son ke si la touche est enfonce et ke ca stoppe direct si la touche est relache

donc pour ca il me semble kil faut utiliser wm_keydown et wm_keyup no

++