• 追踪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;

  • 相关阅读:
    mbedtls安装与入门【转】
    SpringAop代理对象调用过程(八)
    SpringAOP理解-代理对象创建(七)
    NIO与零拷贝
    NIO实现群聊系统
    SpringAOP概述(六)
    NIO简介以及三大组件(BufferChannelSelector)基本使用
    BIO基本介绍以及使用
    Netty简介
    Spring循环依赖解决(五)
  • 原文地址:https://www.cnblogs.com/findumars/p/4758446.html
Copyright © 2020-2023  润新知