Xorcist: Because you are not being nice to message handling. By setting Done to False and allowing it to return normally, you are correctly handling any Windows messages that the application receives. Message handling is something that a lot of people tend to ignore. Maybe it's because the VCL hides most of the message handling that people are not even aware of the necessity of it. Play nice with Windows and it will play nice with you.

Summers Gone: Ok, so there is a difference in executable size, but functionality-wise there is no difference. Performance and functionality is no different. I've done the tests.