Прошу протестировать

audiofeel

Ветеран
Тестируем инсталлятор. Всё, что дергается, мигает или падает - ваш шанс стать героем баг-репорта
 

Вложения

При открытии окна инсталлятора окно серое, потом я начинаю двигать и становится с цветами. Пр развороте опять серое. Так и задумано?
1768656277537.png1768656285414.png

В форме выбора Русского языка обрывается троеточием слова, видимо там ещё текст есть в лейбле?
1768656334652.png

Не делал, чтобы в панели задач при наведении показывалась форма?
1768656381206.png
 
При открытии окна инсталлятора окно серое, потом я начинаю двигать и становится с цветами. Пр развороте опять серое. Так и задумано?
Это Mica, системный материал Windows 11 а не обычный цвет фона. Он работает полноценно только когда окно активно. При открытии или развороте окно временно считается неактивным и Windows показывает нейтральный серый фон. При взаимодействии с окном и получении фокуса Mica начинает учитывать тему и окружение и появляются цвета. Это штатное поведение Windows а не ошибка FMX.
 
Классик форм попробуй, на ней вроде работает превью на панели задач. Но цвет конечно топорно работает, когда форму двигать начинаешь как по мне.
 
Классик форм попробуй, на ней вроде работает превью на панели задач. Но цвет конечно топорно работает, когда форму двигать начинаешь как по мне.
При чем тут "Классик форм"?. Нет и не будет у меня "Классик форм".
 
Последнее редактирование:
Классик форм попробуй, на ней вроде работает превью на панели задач. Но цвет конечно топорно работает, когда форму двигать начинаешь как по мне.
Mica - эффект от Microsoft. Я тут только подключил, как было задумано. Если что не нравится при перетаскивании окна - это к дизайнерам Windows, не ко мне.
 
В панели задач окно Inno Setup. Оно пустое. Ищу решение. Но скорее всего так и оставлю.
audiofeel, позвольте вмешаться, там разработчик что-то наделал, толи с каскадностью окон, толи MainForm там главное родительское окно, не помню. Решается вроде посылом сообщения дочернему окну (WizardForm) на замену окна верхнего уровня, попробуйте пример:
Код:
[Setup]
AppName=My Application
AppVersion=1.5
CreateAppDir=no

[Code]
function SetWindowLong(Wnd: HWND; Index: Integer; NewLong: LongInt): LongInt; external 'SetWindowLongW@user32.dll stdcall';
function GetWindowLong(Wnd: HWND; Index: Integer): LongInt; external 'GetWindowLongA@user32.dll stdcall';
Function GetWindow(HWND: LongInt; uCmd: Cardinal): LongInt; external 'GetWindow@user32.dll stdcall';

const
  GW_OWNER        =  4;
  GWL_HWNDPARENT  = -8;

procedure InitializeWizard;
begin
  with WizardForm do
  SetWindowLong(Handle, GWL_HWNDPARENT, GetWindowLong(GetWindow(Handle, GW_OWNER), GWL_HWNDPARENT));
end;
 
Последнее редактирование:
Понятно, что эффект виндовс, но выглядит, как я уже сказал - топорно.
В Проводнике Windows тот же самый Mica, но там его почти не видно - всё окно занято контентом, и эффект остаётся в заголовке. У меня это просто пример, чтобы проверить, как Mica работает.
 
Последнее редактирование:
audiofeel, позвольте вмешаться, там разработчик что-то наделал, толи с каскадностью окон, толи MainForm там главное родительское окно, не помню. Решается вроде посылом сообщения дочернему окну (WizardForm) на замену окна верхнего уровня, попробуйте пример:
Код:
[Setup]
AppName=My Application
AppVersion=1.5
CreateAppDir=no

[Code]
function SetWindowLong(Wnd: HWND; Index: Integer; NewLong: LongInt): LongInt; external 'SetWindowLongW@user32.dll stdcall';
function GetWindowLong(Wnd: HWND; Index: Integer): LongInt; external 'GetWindowLongA@user32.dll stdcall';
Function GetWindow(HWND: LongInt; uCmd: Cardinal): LongInt; external 'GetWindow@user32.dll stdcall';

const
  GW_OWNER        =  4;
  GWL_HWNDPARENT  = -8;

procedure InitializeWizard;
begin
  with WizardForm do
  SetWindowLong(Handle, GWL_HWNDPARENT, GetWindowLong(GetWindow(Handle, GW_OWNER), GWL_HWNDPARENT));
end;
Да, это вообще не та DLL, о которой тут все думают - это мой проект. Спасибо за подсказку, буду пробовать. Но чувствую, проблем будет немало: из другого окна картинку передать несложно, но она будет не живой и тем более при сворачивании скорее всего всё пропадает - придётся делать скрины каждый раз. При развороте картинка возможно будет смещаться в окне. В общем, скучно не будет. Почему не выбрал FMX в панели задач? Там то же проблемы которые нужно решать, это заголовок который не соответствует тому что ждет пользователь, это отсутствие иконки, ее то же нужно тянуть. Какие странные траблы со сворачиванием. Поэту выбрал Inno Setup.

code_language.pascal:
procedure SetParentThumbnailOnce(ParentHandle, ChildHandle: HWND);
var
  ChildDC, MemDC: HDC;
  Bitmap: HBITMAP;
  OldBitmap: HBITMAP;
  R: TRect;
begin
  // Скрываем дочернее окно из панели задач
  var ExStyle := GetWindowLongPtr(ChildHandle, GWL_EXSTYLE);
  ExStyle := (ExStyle and not WS_EX_APPWINDOW) or WS_EX_TOOLWINDOW;
  SetWindowLongPtr(ChildHandle, GWL_EXSTYLE, ExStyle);
  SetWindowPos(ChildHandle, 0,0,0,0,0, SWP_FRAMECHANGED or SWP_NOZORDER or SWP_NOMOVE or SWP_NOSIZE);

  // Берем текущий bitmap дочернего окна
  if not GetClientRect(ChildHandle, R) then Exit;
  ChildDC := GetDC(ChildHandle);
  MemDC := CreateCompatibleDC(ChildDC);
  Bitmap := CreateCompatibleBitmap(ChildDC, R.Right, R.Bottom);
  OldBitmap := SelectObject(MemDC, Bitmap);

  try
    BitBlt(MemDC, 0,0,R.Right,R.Bottom, ChildDC, 0,0, SRCCOPY);
    if Assigned(DwmSetIconicLivePreviewBitmap) then
      DwmSetIconicLivePreviewBitmap(ParentHandle, Bitmap, nil, 0);
  finally
    SelectObject(MemDC, OldBitmap);
    DeleteObject(Bitmap);
    DeleteDC(MemDC);
    ReleaseDC(ChildHandle, ChildDC);
  end;
end;
 
Последнее редактирование:
Вот эффект TabbedMica - у него, в отличие от Mica, фон берётся не со всего окна, а из области заголовка и вкладок, поэтому на глаз выглядит стабильнее.

TabbedMica.png
 

Вложения

Последнее редактирование:
Понятно, что эффект виндовс, но выглядит, как я уже сказал - топорно.
В принципе я догадываюсь с чем идет сравнение. Но это мой проект.
у мистера @BLACKFIRE69 нет настоящего Fluent или Mica. Он используется старый способ через SetWindowCompositionAttribute и AccentPolicy. Это не системный эффект Windows 11, а просто эффект, который рисуется поверх окна.
@BLACKFIRE69 задаёт цвет, прозрачность и яркость. Поэтому у него всё без серых состояний. Но это не потому, что у него лучше Fluent, а потому что он просто обходит поведение Windows.
Это неофициальный API, его ещё в Windows 10 использовали для blur и прозрачных градиентов. К Mica и настоящему Fluent Design это не относится.
По сути у @BLACKFIRE69 имитация blur. Это не системный материал. Поэтому сравнивать с Mica нельзя, потому что Mica работает по своим правилам Windows - с фокусом окна, активностью и тд.
11.png
 
Последнее редактирование:
Вот эффект Acrylic - у него, в отличие от Mica, фон не из системы, а с того, что под окном (окна, обои). Цвет и прозрачность задаёт Windows.
Acrylic.png
 

Вложения

Последнее редактирование:
Вот для теста инсталлятор который полностью на моем проекте FMXBridge.dll.
XHashEx.dll - @BLACKFIRE69
ISArcEx.dll - @BLACKFIRE69
Дизайн - @MarsBar

Дизайн оставим на второй план, интересует работоспособность.

1.png2.png3.png4.png
 

Вложения

Назад
Сверху