#c #winapi #opengl
#c #winapi #opengl
Вопрос:
Я работал над приложением на основе OpenGL, которое запускается непосредственно в Win32. Я заметил проблему, из-за которой при изменении размера окна рисунок не успевает за краями. Вот видео проблемы в действии.(Обратите внимание на нижний правый и верхний правый углы окна)
Я запускаю функцию перерисовки внутри моего WM_SIZE
события, но у нее все еще есть небольшая задержка.
Если есть способ сделать так, чтобы в нем не было этого визуального артефакта — отлично! Если нет, то как я могу предотвратить обновление размера окна до тех пор, пока элементы управления не будут нарисованы?
Комментарии:
1.Используйте
WM_WINDOWPOSCHANGED
вместоWM_SIZE
. Раздел комментариевWM_WINDOWPOSCHANGED
на странице MSDN указано, что это более эффективно.2. Я бы так и сделал, но мне нужно обработать «SIZE_MAXIMIZED» в wparam, который отправляется только в WM_SIZE. Это потому, что мой стиль окна охватывает панель задач, и я хочу этого избежать.
3. @zangent: ничто не мешает вам обрабатывать как WM_SIZE, так и WM_WINDOWPOSCHANGED.
4. Проверьте, что я снова связал: WM_SIZE создается искусственно
DefWindowProc()
, если вы позволяете ему обрабатыватьWM_WINDOWPOSCHANGED
. Все, что вы можете сделать,WM_SIZE
можно сделать сWM_WINDOWPOSCHANGED
помощью, в том числеSIZE_MAXIMIZED
. Не уверен, что такое точное преобразование.5. Теперь я использую оба — я использую WM_WINDOWPOSCHANGED для перерисовки размера и WM_SIZE для проверки на максимизацию. Тем не менее, это все еще медленно. То же самое происходит по краям. Тем не менее, спасибо за предложение.