肯定不是delphi的bug,把代码贴出来看看

解决方案 »

  1.   


     对,把代码给大家分析分析,不一定是bug!!
      

  2.   

    unit getDC;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls;type
      TForm1 = class(TForm)
        procedure FormPaint(Sender: TObject);
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;implementation{$R *.DFM}procedure TForm1.FormPaint(Sender: TObject);
    var c:tcanvas;
    begin
      c:=tcanvas.Create;
      try
        c.Handle:=getwindowDC(form1.Handle);
        c.Pen.Width:=17;
        c.Pen.Color:=clblue;
        c.Rectangle(clientwidth div 2,12,clientwidth div 2+25,13);
        c.TextOut(clientwidth div 2-5,7,'hanson');
      finally
        c.Free;
    end;end;
    end.
      

  3.   

    会不会是这个原因:
    窗口缩小时, Windows先发送WM_Paint,再发送WM_NCPAINT,后面画的把前面盖掉了。
    其它时候先发送WM_NCPAINT后发送WM_PAINT
      

  4.   

    很简单:  在 form1 的 onCanResize 事件中加一句:  form1.repaint;
      

  5.   

    在窗口缩小的时候 FormPaint 事件根本就没有发生
      

  6.   

    是我错了,正如楼上所说,窗体变大时有WM_NCPAINT->WM_PAINT,变小时只有WM_NCPAINT,所以被盖住了。这和Delphi无关。