这个方法是应该只有TControl的子类才有,是为了方便设置window的属性,比如Button,ScrollBar,CheckBox等等窗口类型,还有窗口的外观等属性(是否有3D外观,是否有滚动条等)

解决方案 »

  1.   

    是TWinControl类中的一个虚方法
    在TWinControl中有个HandleNeeded
    就是在该控件的句柄为0时调用CreateHandle,然后CreateHandle调用CreateWnd
    ,CreateWnd调用CreateParams,CreateParams就是完成创建窗口所需要的一些风格,类名的设置,最终调用CreateWindowHandle创建该窗口
    procedure TWinControl.CreateWindowHandle(const Params: TCreateParams);
    begin
      with Params do
        FHandle := CreateWindowEx(ExStyle, WinClassName, Caption, Style,
          X, Y, Width, Height, WndParent, 0, WindowClass.hInstance, Param);
    end;这里的Params就是
        procedure CreateParams(var Params: TCreateParams); virtual;
    中的Params
    自己覆盖了该函数就可改写Params,定义自己的Window的格式
      

  2.   

    能解释一下把一个TTreeView变成一个树节点带CehckBox框的树型控件,是在重载的CreateParams方法中这样写:
    type
      TCheckBoxTreeView = class(TTreeView)
      protected
        procedure CreateParams(var Params: TCreateParams); override;
      end;procedure TCheckBoxTreeView.CreateParams(var Params: TCreateParams);
    begin
      inherited;
      Params.Style:=Params.Style or TVS_CHECKBOXES; 
      { TVS_CHECKBOXES declared in CommCtrl }
    end;是不是任何控件加上这个参数(TVS_CHECKBOXES)都会有checkbox框,还是只有控件支持这个参数才会有?
      

  3.   

    TVS_CHECKBOXES
    TVS---->TreeView Style:)
      

  4.   

    还是没人说的更详细?看来只有xzgyb(老达摩)的得分分最高了。