zoukankan      html  css  js  c++  java
  • 追踪CM_CONTROLCHANGE消息的产生和执行过程,可以较好的领会VCL的思想(就是到处通知,但耦合性很弱)

    追踪CM_CONTROLCHANGE消息的流向,可以较好的

    测试代码:

    procedure TForm1.Button1Click(Sender: TObject);
    var
    Image2 : TImage;
    begin
    Image2 := TImage.Create(self);
    Image2.Left := 100;
    Image2.Top := 50;
    Image2.Picture.LoadFromFile('c:pic.jpg');
    Image2.Parent := Form1;
    end;

    procedure TWinControl.InsertControl(AControl: TControl);
    begin
    AControl.ValidateContainer(Self);
    Perform(CM_CONTROLLISTCHANGE, Integer(AControl), Integer(True));
    Insert(AControl);
    if not (csReading in AControl.ComponentState) then
    begin
    AControl.Perform(CM_PARENTCOLORCHANGED, 0, 0);
    AControl.Perform(CM_PARENTFONTCHANGED, 0, 0);
    AControl.Perform(CM_PARENTSHOWHINTCHANGED, 0, 0);
    AControl.Perform(CM_PARENTBIDIMODECHANGED, 0, 0);
    if AControl is TWinControl then
    begin
    AControl.Perform(CM_PARENTCTL3DCHANGED, 0, 0);
    UpdateControlState;
    end else
    if HandleAllocated then AControl.Invalidate;
    AlignControl(AControl);
    end;
    Perform(CM_CONTROLCHANGE, Integer(AControl), Integer(True));
    end;

  • 相关阅读:
    第四十三课:jQuery插件化
    js模块化开发
    第四十二课:基于CSS的动画引擎
    第四十一课:CSS3 animation详解
    第四十课:CSS3 transition详解
    第三十九课:requestAnimationFrame详解
    几种排序
    图与搜索
    数组
    链表
  • 原文地址:https://www.cnblogs.com/findumars/p/4758446.html
Copyright © 2011-2022 走看看