Re: KeyDown, KeyPress, KeyUp
От: eddy_ka  
Дата: 19.10.05 22:20
Оценка:
Здравствуйте, DmitriAl, Вы писали:

DA>Подскажите, как решить проблему: я ловлю нажатия клавиш следующим образом


DA>
LRESULT CALLBACK HookProc(int nCode, WPARAM wParam, LPARAM lParam)
DA>{
DA>    if (nCode >= 0) {
DA>        switch (state) {
DA>            case 0:
DA>                if (wParam == VK_CONTROL)
DA>


DA>Нажатие на одну клавишу создает три сообщения: KeyDown, KeyPress, KeyUp. Я хочу обрабатывать только KeyDown. В MSDN написано, что если 31 бит lParam равен нулю, то клавиша нажата, иначе клавиша отжата. Я пишу


DA>
DA>if ((wParam == VK_CONTROL) && !(lParam & 80000000))
DA>


DA>Но это условие выполняется уже два раза, а не три при нажатии на одну клавишу. Как сделать, чтобы оно выполнялось один раз?


Странно, на сколько я помню HookProc должен иметь еще один параметр — сообщение (msg)...
Тогда, вообще, все получается просто:
switch(msg)
{
   case WM_KEYDOWN :
      <...>
   break;
}
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.