WinAPI

AnimateWindow

  • 2010-10-31 18:27
  • 0 komentarzy
  • 1484 odsłony
  • Oceń ten tekst jako pierwszy
// C
BOOL AnimateWindow(      
    HWND hWnd,
    DWORD dwTime,
    DWORD dwFlags
);


// Delphi
function AnimateWindow(hWnd: HWND; dwTime: Cardinal; dwFlags: Cardinal): LongBool; stdcall;


Funkcja AnimateWindow umożliwia zastosowanie efektów specjalnych i animacji na danym oknie, podczas wyświetlania i ukrywania okna. Dostępne są 4 typy animacji: rozwijanie, przesuwanie(slide), zapadanie, rozszerzanie oraz dodatkowo efekt przejścia(alpha-blending).

Parametry
hWnd
Uchwyt animowanego okna. Wywoływany wątek musi posiadać to okno.

dwTime
Czas trwania animacji w milisekundach. Zazwyczaj animacja potrzebuje 200 milisekund do wykonania się.

dwFlags
Kombinacja poniższych flag określająca typ animacji. Domyślnie wszystkie flagi działają podczas wyświetlania okna, aby uzyskać efekt podczas ukrywania okna, należy użyć flagi AW_HIDE w kombinacji z innymi flagami za pomocą operatora OR.

Flagi:
AW_SLIDE
 Używa animacji przesuwania. Jako domyślna wykonuje się animacja rozwijania. Flaga ta jest ignorowana podczas użycia flagi AW_CENTER.
 
AW_ACTIVATE
 Aktywuje okno. Nie używać z flagą AW_HIDE.

AW_BLEND
 Używa efektu przejścia. Ta flaga może być użyta jedynie dla okien najbardziej na wierzchu(topmopst);

AW_HIDE
 Ukrywa okno. Domyślnie okno jest już wyświetlone.

AW_CENTER
 Okno zapada się do wewnątrz jeśli flaga jest użyta z AW_HIDE w przeciwnym wypadku okno rozszerza się. Poniższe flagi kierunku nie dają efektu z tą flagą.

AW_HOR_POSITIVE
 Tworzy animację od lewej do prawej strony. Może być użyta z animacją rozwijania i przesuwania. Flaga jest ignorowana w użyciu z AW_BLEND lub AW_CENTER.

AW_HOR_NEGATIVE
 Tworzy animację od prawej do lewej strony. Może być użyta z animacją rozwijania i przesuwania. Flaga jest ignorowana w użyciu z AW_BLEND lub AW_CENTER.

AW_VER_POSITIVE
 Tworzy animację z góry na dół. Może być użyta z animacją rozwijania i przesuwania. Flaga jest ignorowana w użyciu z AW_BLEND lub AW_CENTER.

AW_VER_NEGATIVE
 Tworzy animację z dołu do góry. Może być użyta z animacją rozwijania i przesuwania. Flaga jest ignorowana w użyciu z AW_BLEND lub AW_CENTER.

Zwracana wartość
Jeśli operacja się powiedzie zwracana jest niezerowa wartość.

W przypadku błędu zwracana wartość jest równa zeru. Błędy funkcji mogą powodować następujące sytuacje:
  • Jeśli kształt okna jest modyfikowany regionami. Windows XP: błąd ten nie występuje.
  • Gdy okno jest już widoczne a Ty próbujesz je wyświetlić.
  • Gdy okno jest już ukryte a Ty próbujesz je ukryć.
  • Jeśli nie ma sprecyzowanego kierunku animacji.
  • Gdy próbujesz animować okno podrzędne(child) z flagą AW_BLEND
  • Jeśli wątek nie posiada okna funkcja zwróci błąd ale funkcja GetLastError zwróci wartość ERROR_SUCCESS

Uwagi
Aby wyświetlić okno bez efektów specjalnych użyj funkcji ShowWindow.

Używając animacji rozwijania lub przesuwania musisz użyć flagi AW_HOR_POSITIVE, AW_HOR_NEGATIVE, AW_VER_POSITIVE lub AW_VER_NEGATIVE do określenia kierunku animacji.

Możesz używać kombinacji flag kierunku AW_HOR_POSITIVE lub AW_HOR_NEGATIVE z AW_VER_POSITIVE lub AW_VER_NEGATIVE w celu stworzenia animacji po przekątnej.

Jeśli okno podrzędne je częściowo przycięte podczas animacji będzie miało dziury w tym miejscu.

Unikaj animacji okna, które ma dołączony cień, ponieważ stworzy to gwałtownie rozpraszającą animację.

Zobacz też: