В своём посте вопрос про бесконечный цикл Вы задали с оглядкой на колбэки. Уже понятно, что цикл нужен для выборки сообщений из очереди. Но вопрос был, скорее, про упрощение колбэка, верно? Очередь сообщений обрабатывается всегда одинаково. Почему бы не вынести её за пределы главной оконной процедуры? Тогда в ней остался бы только выбор обработчика события и обработка события.

Почему так не сделали в винде? Тому есть две причины.
1. Обработка диалоговых окон и горячих клавиш, которые видоизменят цикл из Вашего сообщения. Хотя непонятно, почему было не сделать четыре обработчика очереди и определять нужный на этапе инициализации...
2. Это винда, и в ней всё страшное. Если бы они сделали нормальный колбэк, то он бы выглядел неестественно в окружении всего остального.