IMHO.WS

IMHO.WS (http://www.imho.ws/index.php)
-   Программирование (http://www.imho.ws/forumdisplay.php?f=40)
-   -   Как послать сообщение всем окнам в пределах одного процесса (http://www.imho.ws/showthread.php?t=112472)

yan_kos 13.12.2006 12:48

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

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

Заранее спасибо!

PSyton 14.12.2006 12:20

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

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

Кроме того - для того чтобы не было "не безопасно" слать Броадкасты нужно регистрировать свои оконные сообещиня. И это касается не только броадкастов.

Nerey_ser 14.12.2006 17:13

Как вариант:
Код:

Wnd = GetWindow(hWndParent, 5)
- первое дочернее окно

Код:

Wnd = GetWindow(Wnd, 2)
- следующее дочернее окно

yan_kos 14.12.2006 17:41

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

Всем спасибо. проблема решена.


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

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