改变窗口大小时窗口会抖动,我用lockwindowupdate(handle)/lockwindowupdate(0)后, 改变窗口大小时桌面会抖动,怎幺办呢??

解决方案 »

  1.   

    lockwindowupdate(getdesktopwindow);
    lockwindowupdate(0);             
    有问题?
      

  2.   

    一个例子,试试:新建一工程,在Form1上放置一Panel控件,在Panel中放置一Memo控件,下面是代码
    --------------------------------------------------------------------------------
    unit Unit1;interfaceuses
      Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
      StdCtrls, ExtCtrls, ComCtrls;type
      TForm1 = class(TForm)
        Panel1: TPanel;
        Memo1: TMemo;
        procedure FormCreate(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
        procedure WM_SIZE(var Msg: TMessage); message WM_SIZE;
        procedure WMSysCommand(var Msg: TMessage); Message WM_SYSCOMMAND;
      end;var
      Form1: TForm1;implementation{$R *.DFM}procedure TForm1.WMSysCommand(var Msg: TMessage);
    begin
      if Msg.WParam = SC_MAXIMIZE then
      begin
        LockWindowUpdate(Handle);
        Panel1.Align := alNone;
        Memo1.Align := alNone;
      end;
      inherited;
    end;procedure TForm1.WM_SIZE(var Msg: TMessage);
    begin
      if Msg.WParam = SIZE_MAXIMIZED then
      begin
        Panel1.Align := alClient;
        Memo1.Align := alClient;
        LockWindowUpdate(0);
      end;
      inherited;
    end;procedure TForm1.FormCreate(Sender: TObject);
    begin
      Panel1.Align := alClient;
      Panel1.Color := clGray; //这样做是为了能看清楚一些,这还仅仅是一个小例子,如果Form上控件
                              //众多,则闪烁十分明显
      Memo1.Align := alClient;
    end;end.