Klasa CAnimateCtrl

Udostępnia funkcje typowej kontrolki animacji systemu Windows.

Składnia

class CAnimateCtrl : public CWnd

Członkowie

Konstruktory publiczne

Nazwa/nazwisko opis
CAnimateCtrl::CAnimateCtrl CAnimateCtrl Tworzy obiekt.

Metody publiczne

Nazwa/nazwisko opis
CAnimateCtrl::Close Zamyka klip AVI.
CAnimateCtrl::Create Tworzy kontrolkę animacji i dołącza ją do CAnimateCtrl obiektu.
CAnimateCtrl::CreateEx Tworzy kontrolkę animacji z określonymi stylami rozszerzonymi systemu Windows i dołącza ją do CAnimateCtrl obiektu.
CAnimateCtrl::IsPlaying Wskazuje, czy odtwarzany jest klip Audio-Video Interleaved (AVI).
CAnimateCtrl::Open Otwiera klip AVI z pliku lub zasobu i wyświetla pierwszą ramkę.
CAnimateCtrl::P lay Odtwarza klip AVI bez dźwięku.
CAnimateCtrl::Seek Wyświetla wybraną pojedynczą ramkę klipu AVI.
CAnimateCtrl::Stop Zatrzymuje odtwarzanie klipu AVI.

Uwagi

Ta kontrolka CAnimateCtrl (i dlatego klasa) jest dostępna tylko dla programów działających w systemach Windows 95, Windows 98 i Windows NT w wersji 3.51 lub nowszej.

Kontrolka animacji to prostokątne okno, które wyświetla klip w formacie AVI (Audio Video Interleaved) — standardowy format wideo/audio systemu Windows. Klip AVI to seria ramek bitowych, takich jak film.

Kontrolki animacji mogą odtwarzać tylko proste klipy AVI. W szczególności klipy, które mają być odtwarzane przez kontrolkę animacji, muszą spełniać następujące wymagania:

  • Musi istnieć dokładnie jeden strumień wideo i musi mieć co najmniej jedną ramkę.

  • W pliku mogą znajdować się co najwyżej dwa strumienie (zazwyczaj drugi strumień, jeśli istnieje, jest strumieniem audio, chociaż kontrolka animacji ignoruje informacje audio).

  • Klip musi być nieskompresowany lub skompresowany z kompresją RLE8.

  • W strumieniu wideo nie są dozwolone żadne zmiany palety.

Możesz dodać klip AVI do aplikacji jako zasób AVI lub dołączyć go jako oddzielny plik AVI.

Ponieważ wątek kontynuuje wykonywanie podczas wyświetlania klipu AVI, jednym z typowych zastosowań kontrolki animacji jest wskazanie działania systemu podczas długotrwałej operacji. Na przykład okno dialogowe Znajdowanie Eksplorator plików wyświetla poruszające się szkło powiększające, gdy system wyszukuje plik.

Jeśli utworzysz CAnimateCtrl obiekt w oknie dialogowym lub z zasobu okna dialogowego przy użyciu edytora okien dialogowych, zostanie on automatycznie zniszczony, gdy użytkownik zamknie okno dialogowe.

Jeśli utworzysz CAnimateCtrl obiekt w oknie, może być konieczne jego zniszczenie. Jeśli utworzysz CAnimateCtrl obiekt na stosie, zostanie on zniszczony automatycznie. Jeśli utworzysz CAnimateCtrl obiekt na stercie przy użyciu new funkcji, musisz wywołać delete obiekt, aby go zniszczyć. Jeśli utworzysz nową klasę z CAnimateCtrl klasy i przydzielisz dowolną pamięć w tej klasie, przesłoń CAnimateCtrl destruktor do usunięcia alokacji.

Aby uzyskać więcej informacji na temat korzystania z programu CAnimateCtrl, zobacz Controls and Using CAnimateCtrl (Kontrolki i Używanie biblioteki CAnimateCtrl).

Hierarchia dziedziczenia

Cobject

Ccmdtarget

Cwnd

CAnimateCtrl

Wymagania

Nagłówek: afxcmn.h

CAnimateCtrl::CAnimateCtrl

CAnimateCtrl Tworzy obiekt.

CAnimateCtrl();

Uwagi

Aby można było wykonać inne operacje na utworzonym obiekcie, należy wywołać funkcję Utwórz składową.

Przykład

// This example creates a secondary thread that implements
// the methods of CAnimateCtrl. The procedure of the thread
// is MyClipThreadProc and the thread was created with the
// code AfxBeginThread( MyClipThreadProc, (LPVOID) pParentWnd).
// The example code creates and initializes an animation control,
// then proceeds to pump messages from the queue until one the
// private messages WM_STOPCLIP, WM_PLAYCLIP, WM_SHOWFIRSTFRAME or
// WM_SHOWLASTFRAME is received. The appropriate action is done for
// these messages. The thread ends when the WM_STOPCLIP is received.
// NOTE: the thread parameter, pParam, is a pointer to a CWnd object
// that will be the parent of the animation control.

#define WM_STOPCLIP WM_USER + 1
#define WM_PLAYCLIP WM_USER + 2
#define WM_SHOWFIRSTFRAME WM_USER + 3
#define WM_SHOWLASTFRAME WM_USER + 4

UINT MyClipThreadProc(LPVOID pParam)
{
   // NOTE: pParentWnd is the parent window of the animation control.
   CWnd *pParentWnd = (CWnd *)pParam;
   CAnimateCtrl cAnimCtrl;

   // Create the animation control.
   if (!cAnimCtrl.Create(WS_CHILD | WS_VISIBLE | ACS_CENTER,
                         CRect(10, 10, 100, 100), pParentWnd, 1))
   {
      return false;
   }

   // Open the AVI file.
   if (!cAnimCtrl.Open(_T("MyAvi.avi")))
   {
      return false;
   }

   // Pump message from the queue until the stop play message is received.
   MSG msg;
   while (GetMessage(&msg, NULL, 0, 0) && (msg.message != WM_STOPCLIP))
   {
      switch (msg.message)
      {
         // Start playing from the first frame to the last,
         // continuously repeating.
      case WM_PLAYCLIP:
         if (!cAnimCtrl.Play(0, (UINT)-1, (UINT)-1))
            return false;
         break;

         // Show the first frame.
      case WM_SHOWFIRSTFRAME:
         if (!cAnimCtrl.Seek(0))
            return false;
         cAnimCtrl.RedrawWindow();
         break;

         // Show the last frame.
      case WM_SHOWLASTFRAME:
         if (!cAnimCtrl.Seek((UINT)-1))
            return false;
         cAnimCtrl.RedrawWindow();
         break;
      }

      TranslateMessage(&msg);
      DispatchMessage(&msg);
   }

   cAnimCtrl.Stop();
   cAnimCtrl.Close();

   return true;
}

CAnimateCtrl::Close

Zamyka klip AVI, który został wcześniej otwarty w kontrolce animacji (jeśli istnieje) i usuwa go z pamięci.

BOOL Close();

Wartość zwracana

Bezzerowe, jeśli się powiedzie; w przeciwnym razie zero.

Przykład

Zobacz przykład CAnimateCtrl::CAnimateCtrl.

CAnimateCtrl::Create

Tworzy kontrolkę animacji i dołącza ją do CAnimateCtrl obiektu.

virtual BOOL Create(
    DWORD dwStyle,
    const RECT& rect,
    CWnd* pParentWnd,
    UINT nID);

Parametry

Dwstyle
Określa styl kontrolki animacji. Zastosuj dowolną kombinację stylów okien opisanych w poniższej sekcji Uwagi oraz style kontrolek animacji opisane w sekcji Style kontrolek animacji w zestawie Windows SDK.

Rect
Określa położenie i rozmiar kontrolki animacji. Może to być obiekt CRect lub struktura RECT .

pParentWnd
Określa okno nadrzędne kontrolki animacji, zwykle CDialog. Nie może mieć wartości NULL.

Nid
Określa identyfikator kontrolki animacji.

Wartość zwracana

Bezzerowe, jeśli się powiedzie; w przeciwnym razie zero.

Uwagi

Utworzysz element CAnimateCtrl w dwóch krokach. Najpierw wywołaj konstruktor, a następnie wywołaj Createmetodę , która tworzy kontrolkę animacji i dołącza ją do CAnimateCtrl obiektu.

Zastosuj następujące style okna do kontrolki animacji.

  • zawsze WS_CHILD

  • WS_VISIBLE zwykle

  • WS_DISABLED rzadko

Jeśli chcesz użyć rozszerzonych stylów okien z kontrolką animacji, wywołaj metodę CreateEx zamiast Create.

Oprócz stylów okien wymienionych powyżej możesz zastosować co najmniej jeden styl kontrolki animacji do kontrolki animacji. Zobacz zestaw Windows SDK, aby uzyskać więcej informacji na temat stylów kontrolek animacji.

Przykład

Zobacz przykład CAnimateCtrl::CAnimateCtrl.

CAnimateCtrl::CreateEx

Tworzy kontrolkę (okno podrzędne) i kojarzy ją z obiektem CAnimateCtrl .

virtual BOOL CreateEx(
    DWORD dwExStyle,
    DWORD dwStyle,
    const RECT& rect,
    CWnd* pParentWnd,
    UINT nID);

Parametry

Dwexstyle
Określa rozszerzony styl tworzonej kontrolki. Aby uzyskać listę rozszerzonych stylów systemu Windows, zobacz parametr dwExStyle dla polecenia CreateWindowEx w zestawie WINDOWS SDK.

Dwstyle
Określa styl kontrolki animacji. Zastosuj dowolną kombinację stylów kontrolek okna i animacji opisanych w sekcji Style kontrolek animacji w zestawie Windows SDK.

Rect
Odwołanie do struktury RECT opisującej rozmiar i położenie okna do utworzenia w współrzędnych klienta pParentWnd.

pParentWnd
Wskaźnik do okna, który jest elementem nadrzędnym kontrolki.

Nid
Identyfikator okna podrzędnego kontrolki.

Wartość zwracana

Bezzerowe, jeśli się powiedzie; w przeciwnym razie 0.

Uwagi

Użyj CreateEx zamiast opcji Utwórz, aby zastosować rozszerzone style systemu Windows określone przez WS_EX_ stylu rozszerzonego systemu Windows.

CAnimateCtrl::IsPlaying

Wskazuje, czy odtwarzany jest klip Audio-Video Interleaved (AVI).

BOOL IsPlaying() const;

Wartość zwracana

WARTOŚĆ TRUE, jeśli odtwarzany jest klip AVI; w przeciwnym razie, FAŁSZ.

Uwagi

Ta metoda wysyła komunikat ACM_ISPLAYING opisany w zestawie Windows SDK.

CAnimateCtrl::Open

Wywołaj tę funkcję, aby otworzyć klip AVI i wyświetlić jego pierwszą ramkę.

BOOL Open(LPCTSTR lpszFileName);
BOOL Open(UINT nID);

Parametry

lpszFileName
CString Obiekt lub wskaźnik do ciągu zakończonego wartością null, który zawiera nazwę pliku AVI lub nazwę zasobu AVI. Jeśli ten parametr ma wartość NULL, system zamyka klip AVI, który został wcześniej otwarty dla kontrolki animacji, jeśli istnieje.

Nid
Identyfikator zasobu AVI. Jeśli ten parametr ma wartość NULL, system zamyka klip AVI, który został wcześniej otwarty dla kontrolki animacji, jeśli istnieje.

Wartość zwracana

Bezzerowe, jeśli się powiedzie; w przeciwnym razie zero.

Uwagi

Zasób AVI jest ładowany z modułu, który utworzył kontrolkę animacji.

Open nie obsługuje dźwięku w klipie AVI; Można otwierać tylko dyskretne klipy AVI.

Jeśli kontrolka animacji ma ACS_AUTOPLAY styl, kontrolka animacji automatycznie rozpocznie odtwarzanie klipu natychmiast po jego otworzie. Ten klip będzie nadal odtwarzany w tle, podczas gdy wątek będzie nadal wykonywany. Po zakończeniu odtwarzania klipu zostanie on automatycznie powtórzony.

Jeśli kontrolka animacji ma ACS_CENTER styl, klip AVI zostanie wyśrodkowany w kontrolce, a rozmiar kontrolki nie ulegnie zmianie. Jeśli kontrolka animacji nie ma ACS_CENTER stylu, rozmiar kontrolki zostanie zmieniony po otwarciu klipu AVI na rozmiar obrazów w klipie AVI. Położenie lewego górnego rogu kontrolki nie zmieni się, tylko rozmiar kontrolki.

Jeśli kontrolka animacji ma ACS_TRANSPARENT styl, pierwsza ramka zostanie narysowana przy użyciu przezroczystego tła, a nie koloru tła określonego w klipie animacji.

Przykład

Zobacz przykład CAnimateCtrl::CAnimateCtrl.

CAnimateCtrl::P lay

Wywołaj tę funkcję, aby odtworzyć klip AVI w kontrolce animacji.

BOOL Play(
    UINT nFrom,
    UINT nTo,
    UINT nRep);

Parametry

nFrom
Indeks zerowy ramki, w której rozpoczyna się odtwarzanie. Wartość musi być mniejsza niż 65 536. Wartość 0 oznacza początek od pierwszej ramki w klipie AVI.

Nto
Zerowy indeks ramki, w której kończy się odtwarzanie. Wartość musi być mniejsza niż 65 536. Wartość - 1 oznacza koniec z ostatnią ramką w klipie AVI.

nRep
Liczba powtórzeń klipu AVI. Wartość - 1 oznacza ponowne odtwarzanie pliku w nieskończoność.

Wartość zwracana

Bezzerowe, jeśli się powiedzie; w przeciwnym razie zero.

Uwagi

Kontrolka animacji będzie odtwarzać klip w tle, podczas gdy wątek będzie nadal wykonywany. Jeśli kontrolka animacji ma ACS_TRANSPARENT styl, klip AVI będzie odtwarzany przy użyciu przezroczystego tła, a nie koloru tła określonego w klipie animacji.

Przykład

Zobacz przykład CAnimateCtrl::CAnimateCtrl.

CAnimateCtrl::Seek

Wywołaj tę funkcję, aby statycznie wyświetlić pojedynczą ramkę klipu AVI.

BOOL Seek(UINT nTo);

Parametry

Nto
Indeks zerowy ramki do wyświetlenia. Wartość musi być mniejsza niż 65 536. Wartość 0 oznacza wyświetlenie pierwszej ramki w klipie AVI. Wartość -1 oznacza wyświetlenie ostatniej ramki w klipie AVI.

Wartość zwracana

Bezzerowe, jeśli się powiedzie; w przeciwnym razie zero.

Uwagi

Jeśli kontrolka animacji ma ACS_TRANSPARENT styl, klip AVI zostanie narysowany przy użyciu przezroczystego tła, a nie koloru tła określonego w klipie animacji.

Przykład

Zobacz przykład CAnimateCtrl::CAnimateCtrl.

CAnimateCtrl::Stop

Wywołaj tę funkcję, aby zatrzymać odtwarzanie klipu AVI w kontrolce animacji.

BOOL Stop();

Wartość zwracana

Bezzerowe, jeśli się powiedzie; w przeciwnym razie zero.

Przykład

Zobacz przykład CAnimateCtrl::CAnimateCtrl.

Zobacz też

Klasa CWnd
Wykres hierarchii
CAnimateCtrl::Create
ON_CONTROL