在按住鼠标左键的同时,我需要在鼠标钩中重复我的功能。但是使用我当前的代码,它只会被调用一次。我以为,当我按住鼠标左键时,代码会被一遍又一遍地调用,我不确定这是否真的有效,我想尝试一下。我需要代码在挂钩中运行以便计时。
LRESULT __stdcall hk_mouse( int nCode, WPARAM wParam, LPARAM lParam )
{
if (nCode >= 0)
{
switch (wParam) {
case WM_LBUTTONDOWN:
{
Beep( 1000, 100 );
break;
}
case WM_LBUTTONUP:
{
break;
}
default:
{
break;
}
}
}
return CallNextHookEx( mouse_hook, nCode, wParam, lParam );
}
最佳答案
鼠标按钮消息在Windows中不再重复。
收到WM_LBUTTONDOWN
时,应使用所需的重复延迟create a timer,然后在hook proc中处理WM_TIMER
消息,并在创建计时器时查找您指定的计时器ID。
释放鼠标按钮并收到WM_LBUTTONUP
时,您应该delete the timer。
您应注意,响应WM_TIMER
消息而执行的任何代码也应在WM_LBUTTONDOWN
事件中执行(除非您希望在首次按下按钮时有所延迟),因此最好将该代码放入然后可以从两个地方调用的函数。
关于c++ - 按住mouse1的同时如何在Windows Mousehook中重复代码,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/55475462/