[英]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.