Tasterturabfrage
-
Hallo,
Ich will ein kleines Programm schreiben das beim drücken von F1 beendet wird und beim drücken von F2 eine Zahl ausgibt die ständig größer wird. Ich hab mir schon viel dazu angeschaut und es versucht zu verstehen aber ich werde einfach nicht schlau.#include <windows.h> #include <stdio.h> bool keys[256]; bool active; LRESULT CALLBACK WndProc(HWND, UINT, WPARAM, LPARAM); void main() { short test = 0; printf("test = %d\n",test); while(!keys[VK_F2]) { if(keys[VK_F1]) { test = test + 1; printf("test = %d\n",test); } } } LRESULT CALLBACK WndProc( HWND hWnd, // Handle For This Window UINT uMsg, // Message For This Window WPARAM wParam, // Additional Message Information LPARAM lParam) // Additional Message Information { switch (uMsg) // Check For Windows Messages { case WM_ACTIVATE: // Watch For Window Activate Message { if (!HIWORD(wParam)) // Check Minimization State { active=TRUE; // Program Is Active } else { active=FALSE; // Program Is No Longer Active } return 0; // Return To The Message Loop } case WM_SYSCOMMAND: // Intercept System Commands { switch (wParam) // Check System Calls { case SC_SCREENSAVE: // Screensaver Trying To Start? case SC_MONITORPOWER: // Monitor Trying To Enter Powersave? return 0; // Prevent From Happening } break; // Exit } case WM_CLOSE: // Did We Receive A Close Message? { PostQuitMessage(0); // Send A Quit Message return 0; // Jump Back } case WM_KEYDOWN: // Is A Key Being Held Down? { keys[wParam] = TRUE; // If So, Mark It As TRUE return 0; // Jump Back } case WM_KEYUP: // Has A Key Been Released? { keys[wParam] = FALSE; // If So, Mark It As FALSE return 0; // Jump Back } // case WM_SIZE: // Resize The OpenGL Window // { // ReSizeGLScene(LOWORD(lParam),HIWORD(lParam)); // LoWord=Width, HiWord=Height // return 0; // Jump Back // } } // Pass All Unhandled Messages To DefWindowProc return DefWindowProc(hWnd,uMsg,wParam,lParam); }
Was ist hier falsch?
Bitte um hilfe. MfG Ernd
-
Du vermischst hier Elemente von WINAPI-Programmierung mit Konsolenprogrammierung. Das kann so einfach nicht funktionieren.
Du musst dich für einen Weg entscheiden; ich gehe mal davon aus, dass Du eigentlich für die Konsole programmierst. Dabei hat dann aber eine CALLBACK Funktion nichts zu suchen.
Woher hast Du den Code? Selbstgeschrieben? Wenn nicht, steinige den Verfasser des Ganzen
-
Da das ganze absolut nichts mehr mit Standard ANSI-C zu tun hat, verschieb ich dich mal.
Am besten wohl in die Konsole, das es sich anscheinend um ein Konsolenprogramm handelt. Es gibt übrigens auch ein/zwei Beiträge in der Konsolen-FAQ, die dir weiterhelfen könnten (Abfrage von Sondertasten wie z. B. F1).
-
Dieser Thread wurde von Moderator/in AJ aus dem Forum ANSI C in das Forum DOS und Win32-Konsole verschoben.
Im Zweifelsfall bitte auch folgende Hinweise beachten:
C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?Dieses Posting wurde automatisch erzeugt.
-
Hi,
Ja es soll ein Konsolen Programm sein. Das mit den WinAPI hab ich trotzdem bischen spät bemerkt. Den Code habe ich von nehe. Aber wie das mit der Tastertur abfrage funktioniert verstehe ich immer noch nicht.
Ich muss ein Array definieren mit den Datentyp bool. Das Array steht für jede Taste der Tastertur. In den Tutorials die ich gelesen habe funktioniert das einwandfrei. Aber bei mir überhaupt kein meter.
-
Muss es denn unbedingt mit dieser Callback-Funktion laufen?
Nochmal:
Schau dir mal die Konsolen-FAQ an.
-
Ich habe mir die Tutorials durchgelesen. Und bischen probiert und gefummelt und es Funktioniert. Danke schön für den Hinweis.
MfG Ernd