Problème avec WM_KEYDOWN:

cs_cognac Messages postés 50 Date d'inscription samedi 20 avril 2002 Statut Membre Dernière intervention 11 mars 2010 - 8 avril 2003 à 05:05
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019 - 8 avril 2003 à 14:00
Pourquoi est-ce que "j" est toujours égal à 2 lorsque je presse F1(même la première fois). Je pensais qu'à chaque fois que je presse F1 "j" augmente de 1. Sauf si >2 alors = 0.

Voici une partie du code:

LRESULT CALLBACK WndProc(HWND hwnd, UINT msg, WPARAM wParam, LPARAM lParam)
{
switch(msg)
{
case WM_CREATE:
g_hfFont = GetStockObject(DEFAULT_GUI_FONT);
break;

case WM_CLOSE:
DestroyWindow(hwnd);
break;

case WM_KEYDOWN:
switch (wParam)
{
case VK_F1:
j= j + 1;
InvalidateRect(hwnd, NULL, TRUE);
break;

case VK_ESCAPE:
DestroyWindow(hwnd);
break;
}
if (j>2)
{j = 0;}
InvalidateRect(hwnd, NULL, TRUE);
case WM_PAINT:
{
RECT rcClient;

PAINTSTRUCT ps;
HDC hdc = BeginPaint(hwnd, &ps);

ETC...

Pouvez-vous m'aider
Merci

3 réponses

BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
8 avril 2003 à 13:44
Verifie le deroulement de tes switch, case etc...
if (j>2) j=0 devrait se trouver dans case VK_F1 je pense.
Je mettrais: if(++j > 2) j = 0;
BruNews, ciao...
0
cs_cognac Messages postés 50 Date d'inscription samedi 20 avril 2002 Statut Membre Dernière intervention 11 mars 2010
8 avril 2003 à 13:50
Merci

J'ai fais les modif mais sans succès. Aussitôt que je presse F1 la valeur de "j" devient 2 et reste 2 même si je presse F1 plusieurs fois.
0
BruNews Messages postés 21040 Date d'inscription jeudi 23 janvier 2003 Statut Modérateur Dernière intervention 21 août 2019
8 avril 2003 à 14:00
Si ton truc est pas trop long, poste le
bnutiles@wanadoo.fr
je te le retourne fonctionnant.
Le but est bien qu'il alterne de 0 a 1 ?
BruNews, ciao...
0
Rejoignez-nous