很简单的问题,可能没这个问题(16)

  • 主题发起人 主题发起人 多多帮助
  • 开始时间 开始时间

多多帮助

Unregistered / Unconfirmed
GUEST, unregistred user!
怎么让panel控件Visible = false再=true时,看不到屏幕闪???
 
不简单,我没实现,呵呵你自己也知道,Panel.visible设置为false后,windows会隐含该控件,再visible=true的时候,windows再显示该控件,造成了闪动。除非你的CPU速度足够快,导致操作员感觉不出来。或者有没有高人可以指点一下,在代码执行前,可以将界面区域锁定,无论做Hide还是show动作,windows都不立刻反应出来,直到最后,执行一个释放锁定的函数,windows再作反应?我用Self.Canvas.Lock函数,没有达到预期效果。帮你顶!
 
是不大好实现,但是否此时可以另外弹出一个窗口或者是什么,给人造成错觉呢?
 
问题已解决,谢谢
 
TO znxia:可以拦截WM_PAINT消息实现你的想法.var Form1: TForm1; OldProc: Pointer; bBusy: Boolean;implementation{$R *.dfm}Function WinProc(Hwnd, Msg, wParam, lParam: Longint): LRESULT; stdcall;begin case Msg of WM_PAINT: if not bBusy then Result := CallWindowProc(OldProc, Hwnd, Msg, wParam, lParam); else Result := CallWindowProc(OldProc, Hwnd, Msg, wParam, lParam); end;end;procedure TForm1.btn1Click(Sender: TObject);begin pnl1.Visible := not pnl1.Visible;end;procedure TForm1.FormCreate(Sender: TObject);begin //截取窗口消息 OldProc := Ptr(GetWindowLong(Handle, GWL_WNDPROC)); SetWindowLong(Handle, GWL_WNDPROC, Integer(@WinProc)); bBusy := False;end;procedure TForm1.btn2Click(Sender: TObject);begin bBusy := not bBusy;end;LZ想做什么我没看懂,不过2楼的我看懂了,呵呵
 
后退
顶部