Aplikacja bez systemowego paska tytułowego - brak animacji przy minimalizacji

0

Ustawiam dla okna głównego aplikacji BorderStyle na bsNone, bo mam własny ładny:) pasek tytułowy. Aplikację minimalizuję wywołując Application.Minimize, ale nie ma animacji do paska zadań w Windows 10 (w XP jest, w pozostałych systemach nie sprawdzałem), tylko okno od razu znika. Próbowałem w kodzie ustawić styl okna funkcją SetWindowLong(Handle, GWL_STYLE, NewStyle) ustawiając różne flagi z litanii flag WS_XXXX, ale nie pomogło. Używam Delphi 2009.
Jest jakiś sposób, aby uzyskać animację przy minimalizacji dla aplikacji bez systemowego paska tytułowego?

0

@marogo: może spróbuj z funkcją AnimateWindow – najpierw ukryj formularz, a dopiero potem zminimalizuj aplikację metodą z obiektu Application. Nie bawiłem się tą funkcją jeszcze, więc to luźna propozycja.

Problem w tym, że nie wiem czy to zadziała, a nawet jeśli, to będzie sporo roboty ze zrobieniem dobrego, uniwersalnego rozwiązania. Wszystko dlatego, że pasek zadań może być na dole (domyślnie), ale też na górze lub z boku, a same animację mogą być po prostu wyłączone przez użytkownika. Przydałoby się użyć również innych funkcji – np. GetSystemMetrix – do sprawdzenia tego typu ustawień.

0

Ustawiam dla okna głównego aplikacji BorderStyle na bsNone, bo mam własny ładny:) pasek tytułowy.

Innym rozwiązaniem jest użycie domyślnego BorderStyle, ale rysując ramkę w WM_NCPAINT, tak jak Windows rysuje standardową.
Niezależnie od sposobu rysowania, warto też obsłużyć WM_NCHITTEST żeby system wiedział że „toto” to jest właśnie przycisk minimalizacji okna, a nie jakiś tam przycisk który nie wiadomo co robi. Być może samo to (WM_NCHITTEST) naprawi animację.

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