winapi — Повторите сообщение в 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);
}

Спасибо за прочтение.

1

Решение

Вы не должны использовать MessageBox() в перехватах сообщений, поскольку это нарушает нормальный поток перехвата сообщений — MessageBox () запускает собственный модальный цикл.

Если вам нужно именно MessageBox тогда вы должны использовать PostMessage с пользовательским сообщением и обработчиком. В этом случае MessageBox будет вызван после CallNextHookEx(hHook, nCode, wParam, lParam);

0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]