Оказывается, что оконная процедура по умолчанию генерирует WM_SIZE при обработке WM_WINDOWPOSCHANGED и, поскольку я обрабатывал WM_WINDOWPOSCHANGED, сообщения о размере не создавались. Поэтому я перенаправил сообщение об изменении позиции в обработчик по умолчанию, и сообщения вернулись.
Это следует задокументированному поведению. В документации WM_WINDOWPOSCHANGED есть примечание :
По умолчанию функция DefWindowPro c отправляет WM_SIZE и WM_MOVE сообщений в окне. Сообщения WM_SIZE
и WM_MOVE
не отправляются, если приложение обрабатывает сообщение WM_WINDOWPOSCHANGED
без вызова DefWindowProc
. Более эффективно выполнять любое перемещение или обработку изменения размера во время WM_WINDOWPOSCHANGED
сообщение без вызова DefWindowProc
.
Да, мне жаль признаться, что я не смог прочитать документацию для всех сообщений Window, которые я НЕ возникли проблемы с тем, когда мне нужно было узнать о WM_SIZE. Глупый я за то, что я не предполагал, что документация, необходимая мне для WM_SIZE, была найдена только под другим сообщением! Все, что он говорит о генерации сообщений в документации WM_SIZE:
Отправляется в окно после изменения его размера.
ВООБЩЕ не упоминается ни о какой зависимости на обработку по умолчанию для РАЗЛИЧНОГО сообщения, которое будет найдено. Э-э go, поведение фактически недокументировано, тем более что это может быть критически важной информацией, как это было для меня.
О, хорошо, я сдаюсь, это место стало слишком большим количеством просто шлепать людей вниз для того, чтобы задавать вопросы, некоторые люди думают, что на них слишком легко ответить. Постарайтесь запомнить, что не у всех есть память eideti c и доступ ко всей документации, которую вы все запомнили. Некоторые из нас ищут то, над чем мы работаем, и ожидаем найти важные детали об этом. ОНИ НЕТ. Bye!