WinAPI:: В какой момент Виндовс пересисовывает окно?
Вопрос тупой, понимаю, но ни как не могу сложить полную картину алгоритма отрисовки окна.
Вот например, я вызвал функцию UpdateWindow, виндовс заметила не действительное окно и отправила сообщение WM_PAINT, затем, программа выбрав WM_PAINT, вызывает функцию BeginPaint, получая констекст и отмечает окно действительным. Далее я рисую в контексте то что мне нужно, и отпускаю контекст вызовом функции EndPaint.
Не могу понять когда конкретно виндовс отправит в память видеокарты новый рисунок окна?
А что если при прорисовке окна происходят сложные вычисления занимающие около 5 секунд, когда виндовс отобразит на экране новые данные окна?
Есть предположительно 2 варианта:
1) После освобождения констекста (EndPaint).
2) По таймеру постоянно опрашивает контекст окна.
Поставь опыт и получишь ответ на свой вопрос. Я предполагаю, что сразу рисует (не при EndPaint, а сразу).
Тяжёлых расчётов при обработке WM_PAINT быть не должно. Если они нужны, эти расчёты надо выполнить заранее: например, "рисовать" не на экране, а в памяти.
В GDI нет буферизации, всё что ты рисуешь выводится сразу, прямо во время выполнения вызываемых функций рисования. В этом можно легко убедиться просто запустив пошаговую отладку - каждый примитив будет выведен сразу же, как только будет выполнен соответствующий шаг.
Хотя если точнее, то GDI лишь отправляет команду драйверу устройства. А что происходит дальше (то есть когда изображение реально появится на экране или бумаге, если это принтер) - уже зависит не от GDI.
В дополнение
Что делает BeginPaint: устанавливает область отсечения (чтобы рисовалась только та часть окна, которая является недействительной), производит стирание фона если оно требуется (WM_ERASEBKGND), если в окне есть каретка (текстовый курсор) - скрывает её на время рисования, заполняет структуру PAINTSTRUCT (указатель на которую в неё передаётся), получает DC и возвращает его handle.
Что делает EndPaint: восстанавливает каретку (если она была скрыта в BeginPaint), освобождает DC.
- Установка windows в какой момент нужно вытаскивать флешку После того как идёт завершение, там написано что через 10 сек пк перезагрузится, можно в этот момент вытаскивать флешку? В этом меню завершение которое на фото
- Какая связь между WinAPI, файлом windows.h и библиотекой DLL (kernel32.dll, user32.dll и так далее)? Что находится в файлах (kernel32.dll, user32.dll и так далее) и файле windows.h, какая связь между ними в контексте WinAPI
- C++ WinAPI] Как сделать диалоговое окно в Windows 10 - Style? Приветствую, недавно начал осваивать WinAPI, так как до этого увлекался только консольными софтинами. Так вот, как сделать, чтобы BUTTON, Progress Bar и так далее были в стиле Windows 10, а не Windows 95?
- Какой из windows build актуален на данный момент? Хочу поставить 10 но не знаю какой из build самый актуальный? Такой что бы без лагов и разных глюков, ссылками поделитесь пожалуйста!