2012-01-03 91 views
0

我试图在Qt中获得鼠标单击事件,该鼠标单击必须是全局的,并且即使鼠标未超过我的应用程序窗口也必须收到,我在以下链接中看到:Qt WinEvent - 从未提出

Receive WM_COPYDATA messages in a Qt app

http://developer.qt.nokia.com/forums/viewthread/8103

我可以得到从Windows重新实现WinEvent的消息。我已经尝试过,并且在调试此事件时从未提出过。我错过了什么吗?

请帮助它是紧急的!这里是我的代码示例:

bool WindowsUtil::winEvent(MSG * message, long * result) { 
    if (message->message == WM_LBUTTONDOWN) {//never got here at all 
    *result = 0; 
    return true; 
    } 

    // give the event to qt 
    return false; 
} 
+0

它甚至有可能获得与您的应用程序无关的事件(鼠标)吗? – Ghita 2012-01-03 13:56:04

回答

1

终于明白了。

我使用SetWindowsHookEx初始化为WH_MOUSE_LL作为低级消息的参数。 因此,最终,获取鼠标事件不需要Qt代码。

+0

你可以发表你的工作示例吗? – chwi 2014-01-27 13:57:46

+0

使用低级别的鼠标钩子是一种非常激烈的方式,可以接收不一定针对您窗口的鼠标消息。实现所需行为的不太严格的方法是使用[原始输入](http://msdn.microsoft.com/en-us/library/windows/desktop/ms645536.aspx)API。 – IInspectable 2014-06-02 14:26:35