Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

SendMessage из рабочего потока

2.1K
17 мая 2004 года
cozy
69 / / 11.01.2004
Как послать сообщение окну из рабочего потока?
Так не получается.


UINT MyTreadProc(LPVOID pParam)
{
AfxMessageBox("Entering thread");
SendMessage(AfxGetMainWnd()->GetSafeHwnd(), WM_MY_MSG, 0, (LPARAM)"hello!");
return 0;
}



У меня приложение doc/view на CFormView.
Пробовал через FindWindow - тоже не получается
319
17 мая 2004 года
xelos
577 / / 27.02.2003
Цитата:
Originally posted by cozy
Как послать сообщение окну из рабочего потока?
Так не получается.


UINT MyTreadProc(LPVOID pParam)
{
AfxMessageBox("Entering thread");
SendMessage(AfxGetMainWnd()->GetSafeHwnd(), WM_MY_MSG, 0, (LPARAM)"hello!");
return 0;
}



У меня приложение doc/view на CFormView.
Пробовал через FindWindow - тоже не получается


попробуй явно указатель на окно сохранить...
т.е. в классе создай переменную HWND и при инициализации присваивай ему значение хэндла твоего окна и потом в SendMessage используй это переменную...
У меня когда-то была ситуация, когда рабочий поток в отдельном классе запускался, так вот проблему обмена сообщений я решил через дополнительную переменную.

2.1K
17 мая 2004 года
cozy
69 / / 11.01.2004
Цитата:
Originally posted by xelos

попробуй явно указатель на окно сохранить...
т.е. в классе создай переменную HWND и при инициализации присваивай ему значение хэндла твоего окна и потом в SendMessage используй это переменную...
У меня когда-то была ситуация, когда рабочий поток в отдельном классе запускался, так вот проблему обмена сообщений я решил через дополнительную переменную.


Пробовал передать потоку указатель на окно, но не получается. Посмотри, плиз, мой проект - он пустой, только обработка этого сообщения.
Я уже как только не измывался над этим - не получается

430
18 мая 2004 года
craftyfox
157 / / 20.02.2000
Все просто до маразма (:)).
У тебя GetSafeHwnd() получает handle не frame, а view.
Ну а обработчик во frame'e и т. д.
Можно что-нить вроде ::GetParent(GetSafeHwnd());
Запусти Spy++, полюбуйся.
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог