Interception des touches clavier

Dans la fonction MsgProc on va distinguer les deux états des touches clavier : touche enfoncée, touche soulevée. Grâce à WM_KEYDOWN et WM_KEYUP.

LRESULT CALLBACK MsgProc( HWND hWnd, UINT msg, WPARAM wParam, LPARAM lParam )
{

switch( msg )
{

case WM_DESTROY:
Cleanup();
PostQuitMessage(0);
return 0;

case WM_CREATE:
break;

case WM_KEYDOWN :

switch(wParam) {

case 'M':
et_module.feu=1;
break;

case 'F':
et_module2.feu=1;
break;

case VK_UP:
et_module.haut=1;et_module.bas=0;
break;

case 'Z':
et_module2.haut=1;et_module2.bas=0;
break;

case VK_RIGHT:
et_module.droite=1;et_module.gauche=0;
break;

case 'D':
et_module2.droite=1;et_module2.gauche=0;
break;

case VK_LEFT:
et_module.gauche=1;et_module.droite=0;
break;

case 'Q':
et_module2.gauche=1;et_module2.droite=0;
break;

}

break;

case WM_KEYUP :

switch(wParam) {

case VK_UP:
et_module.haut=2;et_module.bas=0;
break;

case 'Z':
et_module2.haut=2;et_module2.bas=0;
break;

case VK_RIGHT:
et_module.droite=2;et_module.gauche=0;
break;

case 'D':
et_module2.droite=2;et_module2.gauche=0;
break;

case VK_LEFT:
et_module.gauche=2;et_module.droite=0;
break;

case 'Q':
et_module2.gauche=2;et_module2.droite=0;
break;

case VK_ESCAPE:
DestroyWindow(hWnd);
break;

}
break;
}
return DefWindowProc( hWnd, msg, wParam, lParam );
}

Téléchargez la source, cliquez ci-dessous :