Есть программка-уведомление, которая создаёт значок в трее и при нажатии на оный показывает диалог. Требуется, чтобы при закрытии диалога он бы просто прятался, а при щелчке по значку в трее снова вылезал.
Добавил обработку WM_CLOSE и WM_SYSCOMMAND+SC_CLOSE, где прописал скрытие окна ShowWindow(SW_HIDE); на щелчок трей-значка прописал показ окна ShowWindow(SW_SHOW). Проблема: когда окно показывается после такого скрытия, оно выводится в каком-то неактивном виде: содержимое диалога не отрисовывается (пустое серое поле), окно не реагирует на большинство событий (например, движение курсора мыши поверх окна не приводит к приходу сообщений в оконную функцию, не подсвечивается кнопка закрытия). Первый щелчок мышью в любом месте окна "активизирует" это окно (сам щелчок при этом "съедается" и не обрабатывается по назначению), после чего оно отрисовывается полностью и начинает корректно работать и реагировать на события.
Для эксперимента добавил обычную кнопку, которая так же скрывает окно через SW_HIDE — с ней такой проблемы нет, только с кнопкой закрытия окна. Прошу помощи, почему такое может происходить и как сие побороть. Гугление ничего не дало.
Тестовый проект (VS 2015)
P.S. Вместо скрытия-показа диалога можно, конечно, его уничтожать его и заново создавать. Не исключено, что это решило бы проблему, но мне не хотелось костылить дополнительное скрытое окно исключительно для обработки событий от трей-значка. Кроме того, хочется понять, что же я делаю неправильно.