Несмотря на то, что у вас есть средство для определения размеров, я считаю, что Windows запускает свой собственный цикл обработки сообщений. Это отправит в вашу очередь сообщений, но ваша петля выходит за рамки изображения, в то время как определение размера продолжается.
Окно фрейма вызовет SetCapture для захвата всех последующих сообщений мыши. Затем он будет изменять размер вашего окна при движении мыши. Это также прокачает цикл сообщений; Вы можете увидеть похожий код здесь: ftp: //ftp.ringdale.com/support/Nlynx/Tech%20Support%20Docs/Midrange/EmeraldSeries/ADK/DDE/C/APITERM/TRACK.C. Обратите внимание на цикл обработки сообщений в середине этой функции.
Он сам прокачивает очередь, так что код определения размера не должен возвращаться до тех пор, пока не будет завершено отслеживание изменения размера.
Редактировать: Я поднимаю код отслеживания прямоугольника, так как так работало изменение размера окна, показывая только тонкий прямоугольный контур окна, пока мы не получили динамическое изменение размера окна, где все окно обновляется на лету, пока вы изменяете размер. Внутреннее поведение, вероятно, аналогично.
Редактировать 2: Тем не менее, спасибо парням, которые упоминали опубликованные и отправленные сообщения ... отправленные сообщения никогда не пройдут через насос сообщений. Отправленные сообщения быстро сводятся к вызову функции вашего wnd proc. Если они не отправлены в окна, принадлежащие другому потоку, который становится намного более сложным; они добавляются во внутреннюю очередь, принадлежащую очереди сообщений целевого потока, и обрабатываются внутри - до того, как отправленные сообщения возвращаются - внутри GetMessage. Возвращение возвращаемого значения отправленного сообщения в исходный поток требует большего количества вращений:)