imho.ws
IMHO.WS  

Вернуться   IMHO.WS > Компьютеры > Программирование
Опции темы
Старый 13.12.2006, 12:48     # 1
yan_kos
Junior Member
 
Аватар для yan_kos
 
Регистрация: 16.07.2005
Адрес: Украина, г. Ровно
Пол: Male
Сообщения: 140

yan_kos Известность не заставит себя ждать
Question Как послать сообщение всем окнам в пределах одного процесса

Вообщем есть программа под Win9X\С++\MFC\DocView. Нужно послать определенное сообщение из одного окна всем остальным.
Меседж будет посылается из MainFrame в View и их дочерние popup окна.
Мои соображения по этому поводу:
1. Нужно юзать Post метод отправки так что бы не было блокировки.
2. HWND_BROADCAST как получатель не катит так как тогда меседж разойдется по всей ОСи а это не безопасно.
На этом все.. больше идей нету.

Может у кого есть ищо какието соображения по этому поводу?

Заранее спасибо!
__________________
Та программа не глючит, которая не написана

Последний раз редактировалось yan_kos; 13.12.2006 в 12:50. Причина: ошибки... эх... как всегда(
yan_kos вне форума  
Старый 14.12.2006, 12:20     # 2
PSyton
Junior Member
 
Аватар для PSyton
 
Регистрация: 19.04.2002
Адрес: Дом
Пол: Male
Сообщения: 187

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

Так как окна View получить всегда можно (список) то лучшим вариантом будет отсылка сообщения каждому виду, а он уже там разбирается что делатьь со своими дочерними окнами.

Кроме того - для того чтобы не было "не безопасно" слать Броадкасты нужно регистрировать свои оконные сообещиня. И это касается не только броадкастов.
__________________
Дураки не динозавры - они не вымрут...
PSyton вне форума  
Старый 14.12.2006, 17:13     # 3
Nerey_ser
Junior Member
 
Аватар для Nerey_ser
 
Регистрация: 30.03.2006
Адрес: Беларусь
Сообщения: 79

Nerey_ser Путь к славе только начался
Как вариант:
Код:
Wnd = GetWindow(hWndParent, 5)
- первое дочернее окно

Код:
Wnd = GetWindow(Wnd, 2)
- следующее дочернее окно
__________________
Дай человеку рыбу - он будет сыт один день. Научи человека рыбачить - он будет сыт всю жизнь.

Последний раз редактировалось Nerey_ser; 14.12.2006 в 17:25.
Nerey_ser вне форума  
Старый 14.12.2006, 17:41     # 4
yan_kos
Junior Member
 
Аватар для yan_kos
 
Регистрация: 16.07.2005
Адрес: Украина, г. Ровно
Пол: Male
Сообщения: 140

yan_kos Известность не заставит себя ждать
2 PSyton
Ваш вариант конечно "прямо в лоб" но скорее всего самый рациональный.

Всем спасибо. проблема решена.
__________________
Та программа не глючит, которая не написана
yan_kos вне форума  


Ваши права в разделе
Вы НЕ можете создавать новые темы
Вы не можете отвечать в темах.
Вы НЕ можете прикреплять вложения
Вы НЕ можете редактировать свои сообщения

BB код Вкл.
Смайлы Вкл.
[IMG] код Выкл.
HTML код Выкл.

Быстрый переход


Часовой пояс GMT +4, время: 02:08.




Powered by vBulletin® Version 3.8.5
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.