Есть поток, который в некий момент
выдает
::PostMessage(pCD->hMainWnd, pCD->hWinMsg, 0, 0);
Возможно ли его поймать в проекте на MFC в классе View?
Пытался посылать сообщение с заранее определенным номером
типа:
::PostMessage(pCD->hMainWnd, WM_APP+100, 0, 0);
прописывая при этом в MESSAGE_MAP классе View
ON_MESSAGE(WM_APP+100, CPortthreadView::OnNewReadData)
С-Spy показывает что сообщение уходит. Но в View оно не ловится.
Как сделать так, чтобы это сообщение ловилось в проекте на MFC?
Заранее спасибо.
Поймать RegisteredMessage в MFC
Модераторы: Hawk, Romeo, Absurd, DeeJayC, WinMain
Как вариант - переопределить виртуальную функцию WindowProc. Свои сообщения обработать, а для остальных не забыть вызвать функцию предка.
Функция существует у класса CWnd (и его наследников).
Функция существует у класса CWnd (и его наследников).
Код: Выделить всё
CWnd::WindowProc
Provides a Windows procedure (WindowProc) for a CWnd object.
virtual LRESULT WindowProc(
UINT message,
WPARAM wParam,
LPARAM lParam
);
- Romeo
- Сообщения: 3126
- Зарегистрирован: 02 мар 2004, 17:25
- Откуда: Крым, Севастополь
- Контактная информация:
Посмотри внимательно на View в Spy++. Скорее всего там несколько окон друг на друге (как минимум два: MDI Child и сверху окно вьюшки). Вполне возможно, что ты посылаешь сообщение не тому окну.
Entites should not be multiplied beyond necessity @ William Occam
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
---
Для выделения С++ кода используйте конструкцию [ code=cpp ] Код [ /code ] (без пробелов)
---
Сообщение "Спасибо" малоинформативно. Благодарность правильнее высказать, воспользовавшись кнопкой "Reputation" в виде звёздочки, расположенной в левом нижнем углу рамки сообщения.
Да. Класс View это только клиентская область, а сообщение посылалось всему окну. Теперь заработало.
Ко всему в MFC оказался макрос для мессадж мапса ON_REGISTERED_MESSAGE, где можно указывать не константу, а переменную. Так что перехват WindowProc или OnWndMsg тоже оказался лишним, хотя и с ним все работает.
Ко всему в MFC оказался макрос для мессадж мапса ON_REGISTERED_MESSAGE, где можно указывать не константу, а переменную. Так что перехват WindowProc или OnWndMsg тоже оказался лишним, хотя и с ним все работает.