JOURNALRECORDPROC определить нажатой клавишу

Вот прототип моей функции:

LRESULT CALLBACK JournalRecoProc(int code, WPARAM wParam, LPARAM lParam)
{

}

Как я могу проверить внутри, была ли нажата кнопка ВВОД или кнопка мыши?
Я думаю, что следует использовать lParam, но я не мог найти как.

1

Решение

Как MSDN говорит :

Если подключаемая процедура возвращает сообщение в диапазоне WM_KEYFIRST в
WM_KEYLAST, применяются следующие условия:

  • paramL член EVENTMSG структура определяет виртуальный код клавиши, которая была нажата.
  • paramH член EVENTMSG структура определяет код сканирования.
  • Нет способа указать количество повторов. Событие всегда используется для представления одного ключевого события.

Таким образом, вы получите к нему что-то вроде этого:

LRESULT CALLBACK JournalPlaybackProc(int code, WPARAM wParam, LPARAM lParam)
{
// ... blah blah ...

if (code == HC_GETNEXT)
{
// examine eventmsg
EVENTMSG *pEvent = (EVENTMSG*)lParam;

// keypress
if (pEvent->message >= WM_KEYFIRST &&
pEvent->message <= WM_KEYLAST)
{
// decode key press
unsigned int uVirtualKeyCode = pEvent->paramL;
unsigned int uScanCode = pEvent->paramH;

// do your conditional checks here
if (uVirtualKeyCode == VK_ENTER)
{
// Enter key was pressed
}
}
else if (pEvent->message == WM_LBUTTONDOWN)
{
// left mouse click
}
else // ... add checks for other messages ....
}

// ... blah blah ...
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]