#DEFINE RDW_INVALIDATE 0x0001 #DEFINE RDW_INTERNALPAINT 0x0002 #DEFINE RDW_ERASE 0x0004 #DEFINE RDW_VALIDATE 0x0008 #DEFINE RDW_NOINTERNALPAINT 0x0010 #DEFINE RDW_NOERASE 0x0020 #DEFINE RDW_NOCHILDREN 0x0040 #DEFINE RDW_ALLCHILDREN 0x0080 #DEFINE RDW_UPDATENOW 0x0100 #DEFINE RDW_ERASENOW 0x0200 #DEFINE RDW_FRAME 0x0400 #DEFINE RDW_NOFRAME 0x0800 DECLARE INTEGER RedrawWindow IN WIN32API INTEGER hWnd, INTEGER nUpdateRect, INTEGER nUpdateRegion, INTEGER nFlags RedrawWindow(m.oForm.HWnd, 0, 0, RDW_INTERNALPAINT + RDW_UPDATENOW)I added that to my progress bar form and it ran MUCH smoother. You may be able to get rid of most of the autoyield and doevents stuff, too.
>_vfp.autoyield = .f. >oform = newobject('cprogress','utilities.vcx',iif(_vfp.startmode>0,_vfp.servername,"")) >m.oform.show >m.oform.lockscreen = .f. >m.oform.setminmax(0,reccount('bilfile')) >select bilfile >scan > m.lncount = m.lncount + 1 > m.oform.setprogressvalue(m.lncount) > m.oform.visible = .t. > m.oform.refresh() > doevents > &&process ... >endscan >_vfp.autoyield = .t. >>