如题!我需要在子窗口被用户关闭后立即进行额外的处理。谢谢!

解决方案 »

  1.   

    type
      TForm1 = class(TForm)
        BitBtn1: TBitBtn;
        procedure BitBtn1Click(Sender: TObject);
      private
        OldWindowProc: TWndMethod;
      public
        procedure NewWindowProc(var Message: TMessage);
      end;var
      Form1: TForm1;implementationuses Unit2;{$R *.dfm}procedure TForm1.NewWindowProc(var Message: TMessage);
    begin
      if Message.Msg = WM_CLOSE then
        ShowMessage('WM_CLOSE');
      if Assigned(OldWindowProc) then OldWindowProc(Message);
    end;procedure TForm1.BitBtn1Click(Sender: TObject);
    begin
      OldWindowProc := Form2.WindowProc;
      Form2.WindowProc := NewWindowProc;
      Form2.ShowModal;
    end;————————————————————————————————————
    宠辱不惊,看庭前花开花落,去留无意;毁誉由人,望天上云卷云舒,聚散任风。
    ————————————————————————————————————
      

  2.   

    TO :  lxpbuaa(桂枝香在故国晚秋) 好像很复杂,可以提供一点点的解释吗?我看不太懂?谢谢!
      

  3.   

    to richi_(跑):
    lxpbuaa(桂枝香在故国晚秋)的程序利用了消息,如果是关闭窗口的消息,并且窗口存在,就向它发出关闭窗口的指令。
      

  4.   

    简单的就是在OnCloseQuery发送自定义消息到MainForm就OK了
      

  5.   

    lxpbuaa(桂枝香在故国晚秋) 高。它的代码还不明白。就是先择Form2.WindowProc过程指针保存OldWindowProc。然后再说Form2.WindowProc指针指向新的自定义过程。在新过程中一定要把消息传给旧过程处理,这也就是它要先保存的原因。