这是我的功能原型:
LRESULT CALLBACK JournalRecoProc(int code, WPARAM wParam, LPARAM lParam)
{
}
如果点击了ENTER或鼠标按钮,我如何检查内部? 我想应该使用lParam,但我找不到。
答案 0 :(得分:0)
作为MSDN says:
如果挂钩过程返回 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 ...
}