[英]Repeat message in Mouse Proc C++ Win32
我有一个程序,当用户按下Ctrl按钮并单击鼠标右键时,它将显示一个消息框。 但是它有一个循环,我只按一次Ctrl键并右键单击一次,但是它显示了一系列消息框。 如何解决这个问题? https://youtu.be/LzI9M_zEEKQ
这是我的MouseProc程序
#define EXPORT __declspec(dllexport)
unsigned char KeyState[256];
LRESULT EXPORT CALLBACK MouseProc(int nCode, WPARAM wParam, LPARAM lParam)
{
if (nCode < 0)
return CallNextHookEx(hHook, nCode, wParam, lParam);
GetKeyboardState(KeyState);
if (nCode == HC_ACTION)
{
if ((wParam == WM_RBUTTONUP) && (KeyState[VK_CONTROL] & 0x80))
{
MessageBox(NULL, L"Ctrl + Right Click", L"Mouse hook", MB_OK);
}
}
return CallNextHookEx(hHook, nCode, wParam, lParam);
}
谢谢阅读。
您不得在消息挂钩中使用MessageBox()
,因为它会中断正常的消息挂钩流程-MessageBox()运行自己的模态循环。
如果确实需要那里的MessageBox
,则应该将PostMessage
与自定义消息和处理程序一起使用。 在这种情况下,MessageBox将在CallNextHookEx(hHook, nCode, wParam, lParam);
之后被调用CallNextHookEx(hHook, nCode, wParam, lParam);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.