Здравствуйте Кирпа В.А., Вы писали:
КВ>Здравствуйте Dancer, Вы писали:
D>>Здравствуйте Кирпа В.А., Вы писали:
КВ>>>Здравствуйте Dancer, Вы писали:
D>>>>Как добавить в программу обработчик к-л пользовательского сообщения? Я сделал так:
D>>>>добавляю к классу диалога метод
D>>>>D>>>>LONG CFractalDlg::OnThreadRedraw(UINT wParam, LONG lParam)
D>>>>{ ...
D>>>> return 0;
D>>>>}
D>>>>
D>>>>а Сlass Withard сам добавляет ее описание в h-файл диалога, но не туда, где остальные обработчики описаны, а просто как public, например.
D>>>>Но когда я делаю PostMessage из другого потока, сообщение этой функцией не перехватывается, хотя основной процес сообщение получает, я проверял GetMessage.
D>>>>В чем тут может быть дело?
КВ>>>А в карту сообщений добавить все-равно надо
КВ>>>ON_MESSAGE(WM_USER + ..., OnThreadRedraw)
D>>А куда это добавлять надо?
D>>Вставил в срр-файл диалога
D>>D>>BEGIN_MESSAGE_MAP(CFractalDlg, CDialog)
D>> //{{AFX_MSG_MAP(CFractalDlg)
D>> ON_WM_SYSCOMMAND()
D>> ...................
D>> ON_MESSAGE(WM_USER+5, OnThreadRedraw)
D>> //}}AFX_MSG_MAP
D>>END_MESSAGE_MAP()
D>>
D>>в h-файл вставил прототип:
D>>D>>//{{AFX_MSG(CFractalDlg)
D>> virtual BOOL OnInitDialog();
D>> ...
D>> afx_msg LONG OnThreadRedraw(UINT wParam, LONG lParam);
D>>//}}AFX_MSG
D>>DECLARE_MESSAGE_MAP()
D>>
D>>Там же
D>>
D>>D>>#define WM_THREADREDRAW WM_USER + 5
D>>
D>>Но однако работать не стало. Может, я еще чего забыл?
D>>
КВ>А почему ты посылаешь диалогу этот мессаг? У тебя что диалоговое приложение? Что в этот момент активнно окно диалога?
КВ>и второе
КВ>вообще-то прототип ф-ции такой
КВ>afx_msg LRESULT OnThreadRedraw(WPARAM wParam, LPARAM lParam);
Да прототип-то я из книжки взял,на этот поменял — не помогает.
У меня диалоговое приложение, в момент посылки сообщения окно, конечно же, активно. Месагу посылает рабочий поток, в котором производятся вычисления, когда нужно инициировать обновление экрана. Раньше у меня все было в одном месте — запускается поток, дальше в цикле while(::GetMessage(&message, NULL, 0, 0)) инициировалось обновление нужной области экрана и все было нормально. Потом я решил сделать специальный обработчик для своего сообщения, но не тут-то было!
Я просто фигею, дорогая редакция!

Это же должно быть очень просто, и в книжке написано, но не работает!