Normally in Visual Basic, the GUI is frozen while VB code is being executed. After the code "finishes" and returns to the IdleLoop?, waiting for the next event, only then are all the changes to the GUI (re-)painted.
This is annoying when you have a long, complicated loop. One work-around is to call DoEvents() every time through that loop, which services any waiting events immediately, such as requests to repaint the window.
DoEvents() also fires off subroutines to handle any mouse clicks or key presses you've done in the meantime, which can lead to weird re-entrancy errors if you don't know what you're doing.
The normal solution is to put your long processing in a WorkerThread?. However, VbClassic does not support multithreaded programming.