Hi Stephen,
>>You can overcome the time overhead off the DOEVENTS by
>>
IF MDOWN() OR CHRSAW()
>> DOEVENTS
>>ENDIF
>>It only fires when there is an event to process. This mechanism is very efficient when calling several times in a second, without loosing significant amounts of time.
>>
>And the above code would be in my button with the Cancel property?
Just like fred said, it should be somewhere in your processing loop. Unlike just using a plain DOEVENTS, this construction works best if it's called very frequently. Since the MDOWN() and CHRSAW() function don't take up much time, it wouldn't affect performance.
Walter,