tasten abfragen ohne 100% CPU auslastung + Mausrad?
-
Hi,
ich habe zwei fragen. Wie kann ich stetig checken, ob der Benutzer eine Taste drückt ohne dass die Anwendung 50% der CPU-Auslastung benötigt.
nicht so:
int main() { // machwas for(;;) { if(CheckeObTasteGedrückt...) { // ... } else { // ... } } return 0; }2. Frage: Wie kann ich herausfinden, ob das Mausrad, falls so eins exestiert gerade "gerollt" wird?
-
Hm, in der Konsole? Oder kannst du auch ein Fenster erstellen? Dann kannst du dir mal das hier anschauen:
http://msdn.microsoft.com/library/en-us/winui/winui/windowsuserinterface/userinput/mouseinput/mouseinputreference/mouseinputmessages/wm_mousewheel.asp
-
naja, gut, Fenster wäre natürlcih perfekt, aber da habe ich das Problem, dass das Fenster immer im Vordergrund sein muss, um die Nachricht zu empfangen, was sich aber unmöglich einrichten lässt...
-
oder geht es, dass das Fenster die Nachricht trotzdem bekommt, obwohl es im Hintergrund ist?
-
Dazu brauchst du dann Hooks. Schau dazu auch mal in die FAQ - dort gibt es dazu afaik auch was

-
MS Direct Input
-
Aha, ok, das könnte klappen. Leider habe ich gleich schon wieder Probleme.
Ich erstelle meinen Hook so:
hHook = SetWindowsHookEx(WH_MOUSE, reinterpret_cast<HOOKPROC>(HookProc), hInst,0);nur leider wird die Hook-Funktion nie aufgerufen, wenn ich meine Maus bewege.
2. Gibt es überhaupt möglichkeiten herauszufinden (in einer HookProc), ob das Mausrad bzw. eine Maustaste bewegt/gedrückt wurde. Eigentlich kann man doch nur die Mauszeigerposition herausfinden?!
-
Sorry, es heißt natürlich nicht WH_MOUSE sonder WH_MOUSE_LL
-
Problem gelöst...
