Ahh. Don't use messages. Handle the TApplication.OnIdle event, set the Done parameter to False and do updates and draws in there. Now you have no speed difference between a VCL app and a Win32 API app that do the same thing.