Вверх ↑
Администрация
Ответов: 15295
Рейтинг: 1519
#1: 2009-04-29 00:00:10 ЛС | профиль | цитата
MAV, артефакт выражается в том, что WM_PAINT системный и Flip от OpenGL рассинхронизорованны и поэтому при некоторых обстоятельвах может быть заметно мигание. Однако... прошу заметить, что если в кодах библиотеки KOL есть методы, которые вызывают Invalidate элемента с перезаливкой фона (onMouseEnter/Leave именно этим и балуются), то исправить этот момент не возможно никак кроме перекрытия WM_ERASEBACKGROUND (вроде так сообщение звучит), что вообще говоря есть костыль.

Вот простой пример такого гадского Invalidate
code_13063.txt

однако если переписать RedrawManager вот так

#pas
procedure THIRedrawManager._work_doRedraw;
begin
InvalidateRect(_prop_ControlManager.ctrlpoint.Handle, nil, false);
end;
мы получим как раз то, что нужно

Galkov писал(а):
Винда его имеет право прислать в любой момент, никого не спрашивая.

насколько мне известно от системы никогда не приходят сообщения с требованием перерисовать фон, кроме как при изменении габаритных размеров окна. В этих случаях любое приложение будет мигать, что прекрасно видно на игре(под DirectX или OpenGL не важно) свернутой в оконный режим
карма: 27
0
файлы: 1code_13063.txt [609B] [245]