Подскажите, как решить проблему: я ловлю нажатия клавиш следующим образом
LRESULT CALLBACK HookProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if (nCode >= 0) {
switch (state) {
case 0:
if (wParam == VK_CONTROL)
Нажатие на одну клавишу создает три сообщения: KeyDown, KeyPress, KeyUp. Я хочу обрабатывать только KeyDown. В MSDN написано, что если 31 бит lParam равен нулю, то клавиша нажата, иначе клавиша отжата. Я пишу
if ((wParam == VK_CONTROL) && !(lParam & 80000000))
Но это условие выполняется уже два раза, а не три при нажатии на одну клавишу. Как сделать, чтобы оно выполнялось один раз?
20.10.05 11:06: Перенесено модератором из '.NET' — TK
Здравствуйте, 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>
Здравствуйте, DmitriAl, Вы писали:
DA>Добрый день!
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>
Здравствуйте, DmitriAl, Вы писали:
DA>Нажатие на одну клавишу создает три сообщения: KeyDown, KeyPress, KeyUp. Я хочу обрабатывать только KeyDown. В MSDN написано, что если 31 бит lParam равен нулю, то клавиша нажата, иначе клавиша отжата. Я пишу
DA>