Delphi 是如何封装标准控件的?如TEdit控件 
TEdit 继承于TCustomEdit
TCustomEdit 继承于TWinControl我想知道,TEdit控件是如何绘制窗口的呢?源代码在哪里?
 
   

解决方案 »

  1.   

    TEDit窗口是不是windows 自己建立的呢?
    发现Memo,richEdit等编辑控件都是继承于TEdit,
      

  2.   

    李《维深入核心VCL架构剖析上》有说
      

  3.   

    LZ这个话题就大了,要搞清理就去深入研究VCL的架构原理吧
      

  4.   

    我试了下,windows自己注册了 EDIT, BUTTON 等标准窗口类,
    你可以用CreateWindowEX 来建立这些标准窗口,说明Edit,button的
    WinProc都是windows自己已经早就弄好了,delphi对这些标准控件的封装也就是加上一些
    pascal外套而已
      

  5.   

    是的,D中窗体/控件都是使用windows的原生控件的; XE2 FireMonkey才不是
      

  6.   

    你写过win32 api的再结合vcl看看就清楚了,tcustomedit看看CreateParams就知道了,关键是消息和事件的分派,其他的标准win控件也都这样封装。
      

  7.   

    tcustomedit和twincontrol中都有 CreateParams,twincontrol中还有一些设置边框等样子的方法
      

  8.   

    是的,D中窗体/控件都是使用windows的原生控件的; XE2 FireMonkey才不是
    ---------
      我用XE2,好像EDIT控件和D7差不多,都有
    TCustomEdit.CreateParams这个过程
       XE2和D7 都是这样的:
            inherited CreateParams(Params);
      CreateSubClass(Params, 'EDIT');
        
      

  9.   

    xe2  有vcl和fmx之分,7楼是说fmx不是使用win的原生控件