ShowWindow(g_hWnd, 1);
UpdateWindow(g_hWnd);
Мне интересно, почему нам нужно позвонить UpdateWindow
после ShowWindow
?Почему нам нужно вызвать UpdateWindow после ShowWindow?
ShowWindow(g_hWnd, 1);
UpdateWindow(g_hWnd);
Мне интересно, почему нам нужно позвонить UpdateWindow
после ShowWindow
?Почему нам нужно вызвать UpdateWindow после ShowWindow?
ShowWindow
не перекрашивает окно. Вызов UpdateWindow
отправляет WM_PAINT
сообщение в окно и, таким образом, перекрашивает его.
Это совершенно не нужно, ваше окно будет красиво рисовать без него.
Вы увидите незначительное преимущество от него, если ваша программа отключается, делая много вещей после создания окна, но перед входом в цикл сообщений. У пользователя есть на что посмотреть. Наиболее типичным является заставка.
Обычно система отправляет WM_PAINT
, только если очередь сообщений пуста. В нормальных условиях это достаточно хорошо и фактически оптимизирует много ненужной перерисовки. Сообщения в очереди часто изменят состояние приложения, которое часто может привести к недействительности части окна и, следовательно, приведет к еще одной картине (так что пользователь увидит новое состояние приложения). Таким образом, переименование происходит только после того, как все такие сообщения обрабатываются, и система думает, что содержимое нового окна будет действительным в течение некоторого времени (пока в очередь не попадет другое сообщение (ы)).
Однако, если вам необходимо принудительно направить WM_PAINT
и обойти вышеприведенную логику, вы можете принудительно отправить WM_PAINT
(если есть недопустимая область), вызвав UpdateWindow()
.
Это не требуется. –