Вы делаете неправильное предположение о GetMessage
. Вы утверждаете, что если нет сообщения «мы не войдем в цикл». Это означает, что вы предполагаете, GetMessage
возвращает false, если сообщения нет.
На самом деле, GetMessage
возвращает false только при наличии сообщения WM_QUIT
. Если сообщения нет, GetMessage
не возвращает . Он просто ждет, пока сообщение не придет. Это имеет большой смысл для многих программ. Если нет ввода, делать нечего, и вашей программе не требуется процессорное время.
Некоторым программам периодически требуется некоторое время процессора. Вот почему они используют WM_TIMER
: так что GetMessage
возвращает управление вашему коду.