Форум: "WinAPI";
Текущий архив: 2008.08.10;
Скачать: [xml.tar.bz2];
ВнизНе могу получить сообщение: Найти похожие ветки
← →
Still Swamp (2007-11-07 23:13) [0]Не могу получить сообщение:
Регистрирую:
FMessage:=RegisterWindowMessage(PChar(MY_0_MESSAGE+#0));
Отправляю:
SendMessage(HWND_BROADCAST, FMessage, 0, 0)
В обработчике сообщений все ловится кроме моего заветного. В чем дело?
← →
Anatoly Podgoretsky © (2007-11-07 23:19) [1]> 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.
← →
Still Swamp (2007-11-07 23:23) [2]Результат проверил больше С000 и меньше FFFF.
А вот .... ловлю в child.
А что же мне делать?
← →
Eraser © (2007-11-08 00:13) [3]возможно BroadcastSystemMessage[Ex] спасет.
← →
Leonid Troyanovsky © (2007-11-08 10:33) [4]
> Still Swamp (07.11.07 23:23) [2]
> А что же мне делать?
EnumChildWindows
--
Regards, LVT.
← →
Anatoly Podgoretsky © (2007-11-08 11:03) [5]> Still Swamp (07.11.2007 23:23:02) [2]
Сам отправляй своим окнам.
← →
Still Swamp (2007-11-08 11:55) [6]BroadcastSystemMessage не спас.
>Сам отправляй своим окнам.
Ну тут как бы... у меня полсотни окошек которые загружаются из различных DLL их все собирать оч проблематично. Это придется каждое регистрить при загрузке в каком списке в родительском окне, а потом в родительском писать рассылку по этому списку. Торокан посетит.
А можно как нить Application использовать? У меня все окошки про Handle Applicaiton в курсе.
← →
Сергей М. © (2007-11-08 14:19) [7]
> можно как нить Application использовать?
А як же ш ?
Евойное окно как раз и есть топ-левел
← →
Still Swamp (2007-11-08 15:37) [8]А как из TApplication получить список хандлов всех окон?
Я честно говоря не совсем себе представляю процесс.
Вот так выглядит создание очередной формы в DLL.
function View(AHandle:HWND): pointer; stdcall;
begin
Application.Handle:=AHandle;
Result:=TMyForm.Create(Application);
end;
← →
Leonid Troyanovsky © (2007-11-08 15:55) [9]
> 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.
← →
Anatoly Podgoretsky © (2007-11-08 15:56) [10]
> Ну тут как бы... у меня полсотни окошек которые загружаются
> из различных DLL их все собирать оч проблематично.
Тогда откажись от BROADCAST
← →
Still Swamp (2007-11-08 20:40) [11]Тогда откажись от BROADCAST
Чем можно заменить?
← →
Eraser © (2007-11-09 01:56) [12]> [11] Still Swamp (08.11.07 20:40)
[4] Leonid Troyanovsky © (08.11.07 10:33)
← →
Anatoly Podgoretsky © (2007-11-09 08:55) [13]Eraser © (09.11.07 01:56) [12]
Он отказался, сказал окон много, не по силам мне.
← →
Slym © (2007-11-09 09:49) [14]Если все знают об апликашене, почему бы им не знать о другом объекте, который бы и взял на себя диспетчеризацию событий...
Типа: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;
Страницы: 1 вся ветка
Форум: "WinAPI";
Текущий архив: 2008.08.10;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.009 c