c ++ определяет, пытается ли мышь двигаться - PullRequest
0 голосов
/ 08 сентября 2018

Я должен определить, когда мышь пытается двигаться (направление не важно).Я знаю, что это может звучать новобранцем, но это была одна неделя, и я не могу понять, как.

Решение попыталось:

  • , если мышь X и Y остаются одинаковымиМышь не двигается.Однако, когда я достигаю полей экрана (topleft, topright, bottomleft, ecc ..), X и Y остаются равными, и программа думает, что мышь перестала двигаться.Я достиг границы, но мышь все еще движется в этом направлении (или, по крайней мере, пытается)и это останавливает их функционирование (когда запускается ловушка, другие потоки временно игнорируются, пока не завершается функция ловушки)

Как я могу определить, пытается ли мышь какое-либо движение, в фоновом режимеfunction?

[Windows 7 x86, Codeblock, GCC, C ++]


ОБНОВЛЕНИЕ: Я НАШЕЛ РЕШЕНИЕ

MSG msg;
HHOOK MouseHook;

LRESULT CALLBACK mouseProc(int nCode, WPARAM wParam, LPARAM lParam)
{
    cout << "Mouse Moved! " << endl;

    return CallNextHookEx(MouseHook, nCode, wParam, lParam);
}

int main
{
    Start_BackgroundThread1();
    Start_BackgroundThread2();

    MouseHook = SetWindowsHookEx(WH_MOUSE_LL, mouseProc, NULL, 0);
    while(GetMessage(&msg, NULL, 0, 0))
    {

    }
}

Таким образом запускаются фоновые потокиДО входа в цикл GetMessage, и три функции обрабатываются одновременно.GetMessage зацикливается, поэтому он должен запускаться последним.

...