Animacje Windows'owego okna

0

Witam. Dręczy mnie ostatnio taka rzecz. Gdy piszę aplikacje w konsoli to animacje okienka są prawidłowe tzn. okienko zwija się do paska co jest widoczne. Gdy piszę w BCB aplikacje z GUI to animacje są już "styrane" otóż okno tylko zanika. Dodanie do zasobów XPManifesta nic nie daje. Zauważyłem też, że programy w WinAPI mają poprawne animacje. Jak rozwiązać ten fant? Nie będę przecież pisał w WinAPI programów, przynajmniej na razie.

0

Dzieje się tak dlatego że w BCB jaki w Delphi okno główne programu nie jest oknem głównym, główne okno (Application) jest niewidoczne. Animację można "naprawić" tak (podaję sposób w Delphi musisz sobie to przetłumaczyć na BCB):
W pliku głównym projektu (w Delphi to DBR):

var
  ExtStyle: Integer;
//ciach i między Initialize() a tworzeniem pierwszego okna
ExtStyle:= GetWindowLong(Application.Handle, GWL_EXSTYLE);
ExtStyle:= ExtStyle or WS_EX_TOOLWINDOW and not WS_EX_APPWINDOW;
SetWindowLong(Application.Handle, GWL_EXSTYLE, ExtStyle);

Teraz w module głównego okna (unit1.pas):

//ciach
  protected
    procedure CreateParams(var Params: TCreateParams); override;
    procedure WMSysCommand(var Msg: TWMSysCommand); message WM_SYSCOMMAND;
//ciach
procedure TForm1.CreateParams(var Params: TCreateParams);
begin
  inherited CreateParams(Params);
  Params.ExStyle:= Params.ExStyle or WS_EX_APPWINDOW;
end;

procedure TForm1.WMSysCommand(var Msg: TWMSysCommand);
begin
  if (Msg.CmdType and $FFF0 = SC_MINIMIZE) then
    WindowState:= wsMinimized
  else
    inherited;
end;
//ciach

1 użytkowników online, w tym zalogowanych: 0, gości: 1