这是我的函数的原型:
LRESULT CALLBACK JournalRecoProc(int code, WPARAM wParam, LPARAM lParam)
{
}
如果有 ENTER 或单击鼠标按钮,我如何检查内部?我想应该使用 lParam,但我找不到如何使用。
正如MSDN 所说:
如果挂钩过程返回WM_KEYFIRST到 WM_KEYLAST范围内的消息,则适用以下条件:
- EVENTMSG结构的paramL成员指定被按下的键的虚拟键代码。
- EVENTMSG结构的paramH成员指定扫描码。
- 没有办法指定重复计数。事件总是被认为代表一个关键事件。
因此,您可以像这样访问它:
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 ...
}