Есть динамический массив разных форм, у этих форм нужно перехватить событие WM_SysCommand SC_Minimize, и обработать передав управление дальше
Код:
type
TForms=array of TForm;
....
TFormCtrls=record
Forms:TForms;
....
end;
TFormController = class(TCoolBar)
private
{ Private declarations }
FFormCtrls:TFormCtrls;
OldWndProcess:TWndMethod;
procedure Prepare(_Form:TForm);
procedure MyWindowProc(var Message: TMessage);
....
end;
procedure Register;
implementation
procedure TFormController.MyWindowProc(var Message:TMessage);
begin
OldWndProcess(Message);
//Тут мне нужно вызвать изначальный обработчик
//и сделать что-то своё
end;
procedure TFormController.Prepare(_Form:TForm);
var
FormCount:Integer;
begin
FormCount:=Length(FFormCtrls.Forms);
SetLength(FFormCtrls.Forms,FormCount+1);
OldWndProcess:=_Form.WindowProc; //тут я сохраняю старый обработчик
_Form.WindowProc:=MyWindowProc; //ставлю новый
FFormCtrls.Forms[FormCount]:=_Form;
........
end;
Эта замена работает для одного окна, а если я создаю много окон то обработчик работает для одного, последнего, пробовал обработчики сохранять также как формы в динамический массив, но никак не могу понять как потом к ним обратиться.
Один из вопросов можно ли из процедуры MyWindowProc обратиться к объекту чей метод WindowProc вызываеться в данный момент?