2012-01-03 4 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

ответ

1

Наконец-то получил его.

Я использовал SetWindowsHookEx при инициализации с помощью WH_MOUSE_LL в качестве парафикса для сообщений низкого уровня. Итак, в конце код Qt не нужен для получения событий мыши.

+0

Не могли бы вы опубликовать свой рабочий пример? – chwi

+0

Использование низкоуровневого мышиного крючка - довольно радикальный способ получения сообщений мыши, которые не обязательно направлены на ваше окно. Менее серьезным способом реализации желаемого поведения будет использование API [Raw Input] (http://msdn.microsoft.com/en-us/library/windows/desktop/ms645536.aspx). – IInspectable