AIMP Forum

AIMP for PC => Ошибки и замечания / Bugs => Обработано / Processed => Topic started by: «G-Li†ch» on July 31, 2025, 20:33:25

Title: [+] [2689] Моргание обложкой поверх окна настроек
Post by: «G-Li†ch» on July 31, 2025, 20:33:25
Мало того, что ещё само окно настроек при своём появлении ослепляет своей белой пустотой (проблема винды), так ещё и моргания какие-то при "прогрузке"…
Видео в архиве
Title: Re: [2689] Моргание обложкой поверх окна настроек
Post by: Artem on July 31, 2025, 21:57:26
Интересно, если отключить попиксельную полупрозрачность окон в настройках интерфейса - будет моргать?
Title: Re: [2689] Моргание обложкой поверх окна настроек
Post by: «G-Li†ch» on July 31, 2025, 22:20:07
Эм… она так-то уже отключена была… А вот после ВКЛЮчения — моргать перестаёт :) и даже быстрее открывается! Только окно настроек всё равно сначала с белым фоном…
Title: Re: [2689] Моргание обложкой поверх окна настроек
Post by: Алексей Долматов on August 01, 2025, 00:00:08
Только окно настроек всё равно сначала с белым фоном…
Это другая ситуация. Скорее всего, здесь уже требуется время для прогрузки всех параметров и стилей окна.
Title: Re: [2689] Моргание обложкой поверх окна настроек
Post by: Artem on August 01, 2025, 08:00:35
Только окно настроек всё равно сначала с белым фоном…

C этим ничего не поделать. Это не белый фон - это дырки на холсте окна, где должны отрисоваться дочерние элементы управления.
Title: Re: [2689] Моргание обложкой поверх окна настроек
Post by: «G-Li†ch» on August 01, 2025, 08:48:53
Если б были дырки, то окно было бы прозрачным :))
Это всё глюки DWM и особенно неотключаемого в 8-ке/бесятке AERO (то-то мне на классической теме в 7-ке такое попадается слишком редко)…
https://stackoverflow.com/questions/69715610/how-to-initialize-the-background-color-of-win32-app-to-something-other-than-whit
Title: Re: [2689] Моргание обложкой поверх окна настроек
Post by: Artem on August 01, 2025, 09:33:01
окно было бы прозрачным

Нет. Вижу, что вы не знакомы, как устроено GUI в Windows.

Это всё глюки DWM и особенно неотключаемого

Все ровно на оборот: если пустить отрисовку окна строго через DWM c полноценной поддержкой альфа-композинга всех дочерних элементов, то этой проблемы не будет. Проблема как раз в старом подходе
Title: Re: [2689] Моргание обложкой поверх окна настроек
Post by: «G-Li†ch» on August 01, 2025, 19:02:47
вы не поняли :) "дырками" (в буквальном смысле этого слова) мне сложно назвать даже "размазывание" промелькнувших/перетянутых поверх окон по такому холсту, когда возникает подобие HOM-эффекта (ой… у AIMP мелькающая обложка как раз не оставляет следов на окне настроек, опять же, где дырки-то?)… я же имею ввиду буквально "дырявый холст", за дырками которого как раз и видно содержимое "дальних" окон / раб.стола) — HOM-эффекта нет (ну или только на каких-то отдельных присутствующих на этом «холсте» элементах…):) — вот такое поведение мне доводилось видеть слишком редко, и, то, скорее всего только на 7-ке (хоть и с отключенным Aero… а может бесятке?), а вот на XP не припомню (видимо тут-то уже "спасибо" DWM?)… // правка: я уже перед самым сном вспоминаю про SDL (1 или 2)
Title: Re: [2689] Моргание обложкой поверх окна настроек
Post by: «G-Li†ch» on August 21, 2025, 11:44:08
Теперь довелось заметить и моргание (вместо "горения") "белым фоном" окна настроек в момент их открытия уже со включенной полупрозрачностью… ни то, ни сё… видимо, чтоб не раздражало, лучше сделать окно полностью прозрачным перед закрашиванием фона, вклинясь в WM_SHOWWINDOW (как дано в самом первом ответе по той ссылке):
Code: [Select]
if (!GetLayeredWindowAttributes(hWnd, NULL, NULL, NULL))
{
 SetLayeredWindowAttributes(hWnd, 0, 0, LWA_ALPHA);
 DefWindowProc(hWnd, WM_ERASEBKGND, (WPARAM)GetDC(hWnd), lParam);
 SetLayeredWindowAttributes(hWnd, 0, 255, LWA_ALPHA);
 AnimateWindow(hWnd, 200, AW_ACTIVATE|AW_BLEND);
 return 0;
}
return DefWindowProc(hWnd, message, wParam, lParam);