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 :