Доброго всем! Второй день маюсь, поэтому сразу к делу:
Есть hiMainForm. Сборка «AltBuild», но по-сути MainForm и на b186 такая же.
Есть Win10 Version 10.0.19042.1110 (вывод через CMD).
ПРАКТИЧЕСКАЯ ЧАСТЬ
1. Запускаем нулёвое приложение на любом компиляторе.
2. Сворачиваем главную форму в ТаскБар стандартным методом «Свернуть» в заголовке справа сверху (можно через меню по правой клавиши мыши, подача одна и та же).
3. Наводим мышь на ТаскБбар и ждём, чтобы всплыла небольшая рамка отображения окна приложения. Видим, что контроллы окна деактивированы («Свернуть», «Развернуть» и «Закрыть»), надпись на окне также неактивна, а вот сама рамка окна — Активна (осталась тем же цветом).
И вроде бы: — Ну и что что она активна? Приложение свёрнуто. Форму не видно. Какие проблемы?
А такие, что если с этого свёрнутого положения нажать правой мыши на «Закрыть окно» по ТаскБару — MainForm сперва появляется перед носом, а уж потом закрывается. Никогда не замечали эдакий «Эффект Мерцания» при закрытии форм? Вот это оно и есть.
И обратный момент: если нажать не на «Свернуть» в заголовке формы, а кликнуть по ТаскБару, чтобы окно свернулось, наблюдаем совершенно иную картину:
1. Окно полностью деактивировано (вместе с заголовком).
2. Закрытие через ТаскБар происходит как надо (форма не появляется перед закрытием).
Поведение можно сравнить с другими прогами, сделанными не в Хайке → при сворачивании как стандартными методами (Свернуть в заголовке), так и по клику на ТаскБаре ← рамка окна всегда неактивна и нет никаких «Мерцаний» при закрытии.
ТЕХНИЧЕСКАЯ ЧАСТЬ
Пробовал сравнить со старыми (другими) версиями Хайки — идентично.
Пробовал на Облегчённой форме — то же самое.
Пробовал с разными компиляторами (Delphi4, FPC, FPC32/64 от Netspirit) — без изменений.
Основной метод сворачивания окна: PostMessage( Applet.Handle, WM_SYSCOMMAND, SC_MINIMIZE, 0); — и он, судя по сёрфингу инета, правильный. Хотя и перепробовал другие старые методы, которые либо не работают, либо сворачивают окно в мини-рамку.
Начал копать в сторону KOL'a, но не совсем уверен, что проблема в нём (т.к. у FPC2 Kol'ы иных версий).
На данный момент терраризирую Мессаджы в hiMainForm с попыткой добавить деактивацию или изменить поведение свёртывания, что пока безуспешно.
У кого какие мысли по этому поводу? Кто сталкивался/не сталкивался? Есть ли возможность протестировать на 7, такое же поведение? Или хрен с ним, с этим мерцанием?
С мерцанием то может и ладно, да только вот из-за этого самого неправильного сворачивания формы хвостом идут как минимум пара багов; в частности, на данный момент почти уже доделал сохранение формы через Win API с возможностью восстановления как Максимизированной, так и Минимизированной формы, и вот здесь то собака зарылась: минимизированная форма не сохраняется. И чёрт его знает что там потом ещё может всплыть.
P.S. Эндрю, создай раздел что-то вроде HiAsm Тех-вопросы/ Баги компонентов, для постинга подобных тем.
Теги: HiAsm,Delphi
Отредактировано Vanchila (2021-09-13 21:31:52)