![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Не могу получить сообщение: [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.