继承于TCustomControl类,加了CS_VREDRAW滚动条
怎么它会自动用这个控件所在窗体下的背景填充控件内部,而且当滚动条滚动时,
也会自动用上下的边原填充滚动过的位置,而且当其它窗体遮挡住它的一部分时,
控件的这一部分也会被遮挡的窗体部分填充有没有办法可以解决这个问题,也就是说,如果我自己在这个控件上画了东东,它
是不会自动被其它原因所自动更新的(如:滚动条滚动,窗体遮挡...)不会每次都要重画这一部分吧,我希望画过的东东就不用重画(滚动的可视区域外的
已画图象,窗体遮挡无效等)这是部分相关的代码:TCustomTest= class(TCustomControl)
...
...implementationprocedure TCustomTest.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  Params.WindowClass.Style := Params.WindowClass.Style and not CS_VREDRAW;
  Params.Style := Params.Style or WS_TABSTOP or WS_VSCROLL;
  if FBorderStyle = bsSingle then
    if Ctl3D then
      Params.ExStyle := Params.ExStyle or WS_EX_CLIENTEDGE
    else
      Params.Style := Params.Style or WS_BORDER;
end;procedure TCustomTest.Paint;
begin
  //inherited;
不作任何画的东东,不注释inherited也一样
end;procedure TCustomTest.CMCtl3DChanged(var Message: TMessage);
begin
  inherited;
  RecreateWnd;
end;procedure TCustomTest.WMErase(var Msg: TWMEraseBkgnd);
begin       如果不要这个消息处理也一样
  Msg.Result := 1;
end;procedure TCustomTest.WMNCHitTest(var Msg: TWMNCHitTest);
begin      与这个消息无关吧
  DefaultHandler(Msg);
  if (csDesigning in ComponentState) and
    not (Msg.Result in [HTVSCROLL]) then
    Msg.Result := HTCLIENT;
end;constructor TCustomTest.Create(AOwner: TComponent);
begin
  inherited Create(AOwner);
  Color := RGB(255, 255, 255);
  ControlStyle := ControlStyle - [csCaptureMouse] + [csOpaque, csDoubleClicks,
    csFramed, csAcceptsControls, csReplicatable];
.....
.....
end;学习是目的,如果你的足够的时间,请给出代码并分析说明一下,TCustomPanel的Paint事件中,它好像是全部重画它自己的感谢了!!!