Zahlen
-
Hallo,
ich habe ein Problem mit meinem Programm
Ich möchte über die Tastatur Zahlen einlesen und darauf dann reagieren...case WM_KEYDOWN:
i = wParam;
InvalidateRect(hwnd, NULL, TRUE);
return 0;case WM_PAINT:
hdc = BeginPaint(hwnd, &ps);SelectObject(hdc, GetStockObject(WHITE_BRUSH));
Rectangle(hdc, x1,y1,x2,y2);
SelectObject(hdc, GetStockObject(BLACK_BRUSH));
Rectangle(hdc, rect1[i][0] + x1, rect1[i][1] + y1, rect1[i][2] + x1, rect1[i][3] + y1);
Rectangle(hdc, rect2[i][0] + x1, rect2[i][1] + y1, rect2[i][2] + x1, rect2[i][3] + y1);EndPaint(hwnd, &ps);
return 0;Die Zahlenausgabe soll folgenermaßen funktionieren:
Ich zeichne ein weißes Quadrat (Hintergrund ist schwarz) und zeichne da jeweils 2 schwarze Rechtecke rein. z.B. bei der 8 eins oben und eins unten in der mitte...
Die Koordinaten sind in Arrays gespeichert (rect1, rect2).
Mein Problem ist, dass er bei Tastendruck zwar neu zeichnet, aber nur komisches Zeug, nicht das, was er soll.Liegt des daran, dass i ein Integer ist und bei Keydown andere Typen übergeben werden? Was muss ich stattdessen machen?
Thx, Harry
-
WM_KEYDOWN liefert einen virtual-key code!
Bei dir wäre wohl WM_CHAR besser geeignet, das liefert dann einen char, den musst du dann aber noch in einen int umwandeln
-
Wie wandel ich um
Sorry, hab sowas noch nie gemacht...
-
Probier's mal so in der Art:
i = (char)wParam - '0';
Und dann halt noch testen, dass i zwischen 0 und 9 liegt! Also zusammen dann so irgendwie:
c = (char)wParam - '0'; if ((c >= 0) && (c <= 9)) i = c;
[ Dieser Beitrag wurde am 15.02.2003 um 16:05 Uhr von flenders editiert. ]
-
Es funzt
Danke
-
Hi,
bei der Nachricht WM_KEYDOWN wird im Parameter wParam der virtuelle Tastaturcode übergeben dies sind für die Zahlen 0..9 auf der Schreibmaschinentastatur 48-57 (Dez.)/30-39 (Hex.), für den Zehnerblock 96-105 (Dez.)/60-69 (Hex.). Diese Werte müssen also erst umgerechnet werden, damit sie als Index gebraucht werden können.
Bryan
-
Ich hab nochmal wichtige Information hinzugefügt (siehe oben)