Форум: "Основная";
Текущий архив: 2003.11.13;
Скачать: [xml.tar.bz2];
ВнизВопрос про 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;
Скачать: [xml.tar.bz2];
Память: 0.44 MB
Время: 0.036 c