Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.11.13;
Скачать: CL | DM;

Вниз

Вопрос про WndProc   Найти похожие ветки 

 
Alex(is) ©   (2003-10-31 15:53) [0]

Уважаемые мастера! Задача такая: нужно заменить у нескольких компонентов WndProc, на одну определённую функцию. Пишу:

...
for i := 0 to ... do begin
SavedWndProcs[i] := xxx.WindowProc;
xxx.WindowProc := MyWndProc;
end;
...
procedure MyWndProc(var Message: TMessage);
begin
...
end;
...


Проблема же вот в чём, в этой процедуре надо вызывать сохранённый WndProc SavedWndProcs[i], но в MyWndProc неизвестно, какому окну пришло сообщение. Поэтому не известен индекс в массиве и поэтому нельзя вызвать прежнюю WndProc.

Как мне узнать, к примеру, Handle окна, которому пришло сообщение?

Заранее благодарен Ale}{(is)


 
Владислав ©   (2003-10-31 15:56) [1]

Используй MakeObjectInstance и FreeObjectInstance


 
Юрий Зотов ©   (2003-10-31 16:29) [2]

Проще Aplication.OnMessage. Там проверяем окно-получатель и вызываем (или НЕ вызываем) все, что угодно.


 
Alex(is) ©   (2003-10-31 18:51) [3]

Спасибо


 
wicked ©   (2003-10-31 19:20) [4]

как вариант - прокси обьект такого вида:

TProxyObject = class(TObject)
TheControl: TWinControl;
SavedProc: TWndMethod;
procedure NewWndProc(var Message: TMessage);
end;



Страницы: 1 вся ветка

Текущий архив: 2003.11.13;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.023 c
1-41594
qwe
2003-10-27 09:48
2003.11.13
Что такое *.dpk и как с ним работать


3-41042
Кодер
2003-10-15 09:55
2003.11.13
Как вставить картинки в MSSQL?


14-42080
Прячу от админа
2003-10-23 13:29
2003.11.13
Как измерить интернет трафик?


1-41647
ARTEMKA
2003-10-25 16:52
2003.11.13
Как сохранить регион


14-42009
Vlad Oshin
2003-10-24 10:12
2003.11.13
Никто не в курсе куда Outlook пишет блокируемые адреса?