Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Не могу получить сообщение: [D7, WinXP]


Still Swamp ©   (2007-11-07 23:13:00) 

Не могу получить сообщение:
Регистрирую:
FMessage:=RegisterWindowMessage(PChar(MY_0_MESSAGE+#0));

Отправляю:
SendMessage(HWND_BROADCAST, FMessage, 0, 0)

В обработчике сообщений все ловится кроме моего заветного. В чем дело?


Slym   (2007-11-09 09:49:00) [1]

Если все знают об апликашене, почему бы им не знать о другом объекте, который бы и взял на себя диспетчеризацию событий...
Типа:
TEventDisp=class
private
 FClientList:TList;
public
procedure   Advise(SenderId:TObject;EventProc:TNotifyEvent);
 Undvise(SenderId:TObject);
end;

form.EventProc
begin
 Caption:='ya';
end;

form.Create
begin
EventDisp.Advise(self,EventProc);
end;
form.Destroy
begin
EventDisp.Unadvise(self);
end;


Anatoly Podgoretsky   (2007-11-09 08:55:00) [2]

Eraser ©   (09.11.07 01:56) [12]
Он отказался, сказал окон много, не по силам мне.


Eraser   (2007-11-09 01:56:00) [3]

> [11] Still Swamp   (08.11.07 20:40)

[4] Leonid Troyanovsky ©   (08.11.07 10:33)


Still Swamp   (2007-11-08 20:40:00) [4]

Тогда откажись от BROADCAST
Чем можно заменить?


Anatoly Podgoretsky   (2007-11-08 15:56:00) [5]


> Ну тут как бы... у меня полсотни окошек которые загружаются
> из различных DLL их все собирать оч проблематично.

Тогда откажись от BROADCAST


Leonid Troyanovsky   (2007-11-08 15:55:00) [6]


> Still Swamp   (08.11.07 15:37) [8]

> Вот так выглядит создание очередной формы в DLL.

> function View(AHandle:HWND): pointer; stdcall;
> begin
>  Application.Handle:=AHandle;
>  Result:=TMyForm.Create(Application);
> end;

В печку.

--
Regards, LVT.


Still Swamp   (2007-11-08 15:37:00) [7]

А как из TApplication получить список хандлов всех окон?
Я честно говоря не совсем себе представляю процесс.

Вот так выглядит создание очередной формы в DLL.

function View(AHandle:HWND): pointer; stdcall;
begin
 Application.Handle:=AHandle;
 Result:=TMyForm.Create(Application);
end;


Сергей М.   (2007-11-08 14:19:00) [8]


> можно как нить Application использовать?


А як же ш ?
Евойное окно как раз и есть топ-левел


Still Swamp   (2007-11-08 11:55:00) [9]

BroadcastSystemMessage не спас.

>Сам отправляй своим окнам.
Ну тут как бы... у меня полсотни окошек которые загружаются из различных DLL их все собирать оч проблематично. Это придется каждое регистрить при загрузке в каком списке в родительском окне, а потом в родительском писать рассылку по этому списку. Торокан посетит.

А можно как нить Application использовать? У меня все окошки про Handle Applicaiton в курсе.


Anatoly Podgoretsky   (2007-11-08 11:03:00) [10]

> Still Swamp  (07.11.2007 23:23:02)  [2]

Сам отправляй своим окнам.


Leonid Troyanovsky   (2007-11-08 10:33:00) [11]


> Still Swamp   (07.11.07 23:23) [2]

> А что же мне делать?

EnumChildWindows

--
Regards, LVT.


Eraser   (2007-11-08 00:13:00) [12]

возможно BroadcastSystemMessage[Ex] спасет.


Still Swamp   (2007-11-07 23:23:00) [13]

Результат проверил больше С000 и меньше FFFF.
А вот .... ловлю в child.
А что же мне делать?


Anatoly Podgoretsky   (2007-11-07 23:19:00) [14]

> Still Swamp  (07.11.2007 23:13:00)  [0]

И чему равно FMessage
И это условие выполнено?

If this parameter is HWND_BROADCAST, the message is sent to all top-level windows in the system, including disabled or invisible unowned windows, overlapped windows, and pop-up windows; but the message is not sent to child windows.


Наверх

Титульная страница Поиск, карта сайта Написать письмо