Показать сообщение отдельно
  #1  
Старый 27.04.2012, 12:59
Аватар для Lost_Fish
Lost_Fish Lost_Fish вне форума
Начинающий
 
Регистрация: 21.07.2011
Адрес: Новосибирск
Сообщения: 103
Версия Delphi: Delphi 7,XE2
Репутация: выкл
По умолчанию Помогите разобраться с перехватом сообщений

Есть динамический массив разных форм, у этих форм нужно перехватить событие 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 вызываеться в данный момент?
Ответить с цитированием