Re[3]: пользовательское сообщение
От: Кирпа В.А. Украина  
Дата: 05.04.02 09:03
Оценка: 1 (1)
Здравствуйте 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);
!0xDEAD
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.