窗体移动,改变大小,会向它里面包含的控件,发送哪个消息呢?

解决方案 »

  1.   


    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs;type
      TForm1 = class(TForm)
      private
        { Private declarations }
      public
        procedure WMPosChange(var msg: TMessage); message WM_WINDOWPOSCHANGED;
      end;var
      Form1: TForm1;implementation{$R *.dfm}{ TForm1 }procedure TForm1.WMPosChange(var msg: TMessage);
    begin
      Caption := IntToStr(Random(1000));
    end;end.
      

  2.   

    好像只会向form发吧,form里的控件是不会得到消息的
    除非form的响应事件再对控件发消息——猜测
      

  3.   

    哦,是的,没看清楚
    窗体不给控件发消息,应该是notify每一个控件
    就是用for语句遍历每一个控件,告诉他们我变大了
    应该是这样
      

  4.   

    只会对窗体发送WM_WINDOWPOSCHANING或者WM_WINDOWPOSCHANGED消息
      

  5.   

    是这样的:窗口先得到WM_Size消息,然后窗口根据新的size还有内部空间的布局方式重算各个子控件的位置,然后调用子控件的SetBounds方法,而setbounds里面是调的window api:setwindowpos让子控件的大小和位置发生变化,setwindowpos会触发WM_Size、WM_WINDOWPOSCHANING或者WM_WINDOWPOSCHANGED消息。看看vcl代码就会明白。
      

  6.   

    spy也能检测消息,我还真么用过,请问怎么监测
    只是用spy++拿handle,然后测试发消息