C ++检测鼠标是否尝试移动

时间:2018-09-08 07:41:46

标签: mouse move detect

我必须检测鼠标何时尝试移动(方向并不重要)。我知道这听起来很新奇,但是已经过去了一个星期,我真的不知道怎么做。

尝试过的解决方案:

  • 如果鼠标X和Y保持不变,则不会移动鼠标。但是,当我到达屏幕边缘(左上角,右上角,左下角等)时,X和Y保持相等,程序认为鼠标停止移动。我已达到空白,但鼠标仍朝该方向移动(或至少正在尝试)

  • 鼠标钩子,但是该钩子不能与其他线程一起在后台工作,这会阻止它们正常运行(当钩子被触发时,其他线程将被暂时忽略,直到钩子函数结束)

    < / li>

如何在后台功能中检测鼠标是否在尝试任何移动?

[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进入循环,因此它必须是最后一个开始。

0 个答案:

没有答案