2013-09-22 3 views
1

Я использую Windows Hooks в своем приложении Win32, я нашел ON_REGISTERED_MESSAGE в приложении MFC, которое используется для сообщений с сообщениями с сообщением, но как я могу использовать этот метод в Win32 без классов MFC?ON_REGISTERED_MESSAGE эквивалент Win32

ответ

1

Вы используете RegisterWindowMessage() для получения идентификатора сообщения. Затем вы используете вызовы Post/SendMessage(). Код, обрабатывающий сообщение, также вызывает RegisterWindowMessage, используя ту же самую строку. И получает тот же самый идентификатор сообщения. И проверяет соответствие в процедуре окна с оператором if().

Макрос ON_REGISTERED_MESSAGE ничего не делает, он просто скрывает это утверждение if().

+0

У меня есть что-то вроде статического UINT UWM_MOUSEDBCLICK = :: RegisterWindowMessage (UWM_MOUSELDBCLICK_MSG); но там, где я должен делать, если заявление, может быть здесь \t // Главный цикл обработки сообщений: \t время (GetMessage (& тзд, NULL, 0, 0)) \t { \t \t если (TranslateAccelerator (msg.hwnd, hAccelTable, и сообщ)) \t \t { \t \t \t TranslateMessage (&msg); \t \t \t DispatchMessage (&msg); \t \t} \t \t если (msg.message == UWM_MOUSEMOVE) { \t \t \t // сделать smoething \t \t} \t} –

+0

Нет, в оконной процедуре. Тот, который вы написали для окна, чей дескриптор вы используете в вызове Post/SendMessage. –

+0

Хорошо, но теперь у меня есть еще одна проблема, глобальные мыши (за пределами окна клиента) не получает, я написал \t если (msg-> сообщение == WM_LBUTTONDOWN || \t msg-> сообщение == WM_NCLBUTTONDOWN) \t PostMessage (hWndServer, UWM_MOUSEMOVELEFTBUTTONDOWN, 0, 0); Но он не работает –

Смежные вопросы