warten, bis Taste losgelassen wurde
-
Hy,
ich hab folgendes Problem:
Ich frage ab, ob eine bestimmte tastenkomb. gedrückt wird. Ich möchte aber, dass das "T" im folgenden Bsp. nur einmal ausgegeben wird, auch wenn man die Taste gedrückt lässt. Also suche ich eine Möglichkeit, wie ich erreichen kann, dass das Programm wartet, bis die taste losgelassen wird und erst wieder das "T" ausgibt, wenn sie erneut gedrückt wurde. Kann mir jemand helfen??if(GetAsyncKeyState(90)&1 ==1) { if (GetAsyncKeyState(VK_MENU) && GetAsyncKeyState(VK_CONTROL)) { cout<<"T"; } }
-
MSDN: If the function succeeds, the return value specifies whether the key was pressed since the last call to GetAsyncKeyState, and whether the key is currently up or down. If the most significant bit is set, the key is down, and if the least significant bit is set, the key was pressed after the previous call to GetAsyncKeyState.
auf deutsch: wenn 0x0001, dann wurde die taste seit dem letzten aufruf gedrückt, wenn 0x1000, dann ist die taste im momment gedrückt, also:
if ((GetAsyncKeyState(VK_MENU) &0x0001 ) && (GetAsyncKeyState(VK_CONTROL) &0x0001 ))so meinst du das oder?
-
Perfekt,
genau das suchte ich.
Vielen dank

-
Warum verwendets Du nicht die normalen Fenster Nachrichten?
-
guck mal - er hat "cout" im code.
obwohl, müsste so auch gehen:
PeekMessage(&msg, NULL, 0,0, PM_REMOVE) if(msg.message == WM_KEYDOWN) { switch(msg.wParam) { case VK_MENU: // öhm, und wie jetzt hier? so oder - if(GetAsyncKeyState(VK_CONTROL)& 0x0001) { cout >> 'T'; } } }ne, das ist bescheuert xD
-
Martin meint vermutlich WM_KEYDOWN, WM_KEYUP...
Und wenn Du was mit Menüs machst, warum nimmst Du keine "Accelerations"?