Sdílet prostřednictvím


CAnimateCtrl – třída

Poskytuje funkce běžného ovládacího prvku animace systému Windows.

Syntaxe

class CAnimateCtrl : public CWnd

Členové

Veřejné konstruktory

Název Popis
CAnimateCtrl::CAnimateCtrl CAnimateCtrl Vytvoří objekt.

Veřejné metody

Název Popis
CAnimateCtrl::Close Zavře klip AVI.
CAnimateCtrl::Create Vytvoří ovládací prvek animace a připojí ho k objektu CAnimateCtrl .
CAnimateCtrl::CreateEx Vytvoří ovládací prvek animace se zadanými rozšířenými styly Windows a připojí ho k objektu CAnimateCtrl .
CAnimateCtrl::IsPlaying Určuje, jestli se přehrává klip AVI (Audio-Video Interleaved).
CAnimateCtrl::Open Otevře klip AVI ze souboru nebo prostředku a zobrazí první snímek.
CAnimateCtrl::P lay Přehraje klip AVI bez zvuku.
CAnimateCtrl::Seek Zobrazí vybraný jeden rámeček klipu AVI.
CAnimateCtrl::Stop Přestane přehrávat klip AVI.

Poznámky

Tento ovládací prvek (a proto CAnimateCtrl třída) je k dispozici pouze pro programy spuštěné v systémech Windows 95, Windows 98 a systém Windows NT verze 3.51 a novější.

Ovládací prvek animace je obdélníkové okno, které zobrazuje klip ve formátu AVI (Audio Video Interleaved) – standardní formát videa a zvuku windows. Avi klip je série rastrových snímků, jako je film.

Ovládací prvky animace můžou přehrávat jenom jednoduché klipy AVI. Klipy, které se mají přehrávat ovládacím prvku animace, musí splňovat následující požadavky:

  • Musí existovat přesně jeden stream videa a musí mít alespoň jeden rámec.

  • V souboru může být maximálně dva streamy (obvykle druhý datový proud, pokud je k dispozici, zvukový stream, i když ovládací prvek animace ignoruje zvukové informace).

  • Klipart musí být nekomprimovaný nebo komprimovaný pomocí komprese RLE8.

  • Ve streamu videa nejsou povoleny žádné změny palety.

Klip AVI můžete přidat do své aplikace jako prostředek AVI, nebo to může doprovázet vaši aplikaci jako samostatný soubor AVI.

Vzhledem k tomu, že vlákno pokračuje v provádění při zobrazení klipu AVI, jedním z běžných použití pro ovládací prvek animace je indikovat systémovou aktivitu během zdlouhavé operace. Například dialogové okno Najít Průzkumník souborů zobrazí pohyblivé lupy, když systém hledá soubor.

Pokud vytvoříte CAnimateCtrl objekt v rámci dialogového okna nebo z prostředku dialogového okna pomocí editoru dialogů, při zavření dialogového okna se automaticky zničí.

Pokud vytvoříte CAnimateCtrl objekt v okně, budete ho možná muset zničit. Pokud vytvoříte CAnimateCtrl objekt v zásobníku, automaticky se zničí. Pokud vytvoříte CAnimateCtrl objekt v haldě new pomocí funkce, musíte volat delete objekt, aby ho zničil. Pokud odvozujete novou třídu z CAnimateCtrl této třídy a přidělíte jakoukoli paměť v této třídě, přepište CAnimateCtrl destruktor tak, aby se uvolněny přidělení.

Další informace o použití CAnimateCtrlnaleznete v tématu Ovládací prvky a použití CAnimateCtrl.

Hierarchie dědičnosti

Objekt CObject

CCmdTarget

CWnd

CAnimateCtrl

Požadavky

Hlavička: afxcmn.h

CAnimateCtrl::CAnimateCtrl

CAnimateCtrl Vytvoří objekt.

CAnimateCtrl();

Poznámky

Před provedením jakýchkoli dalších operací s objektem, který vytvoříte, musíte volat funkci Vytvořit člena.

Příklad

// 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

Zavře klip AVI, který byl dříve otevřen v ovládacím prvku animace (pokud existuje) a odebere ho z paměti.

BOOL Close();

Návratová hodnota

Nenulové, pokud je úspěšné; jinak nula.

Příklad

Podívejte se na příklad pro CAnimateCtrl::CAnimateCtrl.

CAnimateCtrl::Create

Vytvoří ovládací prvek animace a připojí ho k objektu CAnimateCtrl .

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

Parametry

dwStyle
Určuje styl ovládacího prvku animace. Použijte libovolnou kombinaci stylů oken popsaných v části Poznámky níže a styly ovládacích prvků animace popsané v části Styly ovládacích prvků animace v sadě Windows SDK.

Rect
Určuje umístění a velikost ovládacího prvku animace. Může to být objekt CRect nebo struktura RECT .

pParentWnd
Určuje nadřazené okno ovládacího prvku animace, obvykle .CDialog Nesmí mít hodnotu NULL.

Nid
Určuje ID ovládacího prvku animace.

Návratová hodnota

Nenulové, pokud je úspěšné; jinak nula.

Poznámky

Sestavíte ho CAnimateCtrl ve dvou krocích. Nejprve zavolejte konstruktor a potom volání Create, který vytvoří animační ovládací prvek a připojí ho k objektu CAnimateCtrl .

U ovládacího prvku animace použijte následující styly oken.

  • WS_CHILD Always

  • WS_VISIBLE obvykle

  • zřídka WS_DISABLED

Chcete-li použít rozšířené styly oken s ovládacím prvku animace, zavolejte Místo Create.

Kromě výše uvedených stylů oken můžete u animačního ovládacího prvku použít jeden nebo více stylů ovládacích prvků animace. Další informace o stylech ovládacích prvků animace najdete v sadě Windows SDK.

Příklad

Podívejte se na příklad pro CAnimateCtrl::CAnimateCtrl.

CAnimateCtrl::CreateEx

Vytvoří ovládací prvek (podřízené okno) a přidruží ho k objektu CAnimateCtrl .

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

Parametry

dwExStyle
Určuje rozšířený styl vytvářeného ovládacího prvku. Seznam rozšířených stylů Windows naleznete v části dwExStyle parametr pro CreateWindowEx v sadě Windows SDK.

dwStyle
Určuje styl ovládacího prvku animace. Použijte libovolnou kombinaci stylů ovládacích prvků oken a animací popsaných v části Styly ovládacích prvků animace v sadě Windows SDK.

Rect
Odkaz na strukturu RECT popisující velikost a umístění okna, které se má vytvořit, v souřadnicích klienta pParentWnd.

pParentWnd
Ukazatel na okno, které je nadřazeným objektem ovládacího prvku.

Nid
ID podřízeného okna ovládacího prvku.

Návratová hodnota

Nenulové, pokud je úspěšné; jinak 0.

Poznámky

Místo příkazu Vytvořit použijte CreateEx rozšířené styly Windows určené před WS_EX_ rozšířeného stylu Windows.

CAnimateCtrl::IsPlaying

Určuje, jestli se přehrává klip AVI (Audio-Video Interleaved).

BOOL IsPlaying() const;

Návratová hodnota

TRUE, pokud se přehrává klip AVI; jinak NEPRAVDA.

Poznámky

Tato metoda odešle ACM_ISPLAYING zprávu, která je popsaná v sadě Windows SDK.

CAnimateCtrl::Open

Voláním této funkce otevřete klip AVI a zobrazte jeho první snímek.

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

Parametry

lpszFileName
CString Objekt nebo ukazatel na řetězec ukončený hodnotou null, který obsahuje buď název souboru AVI, nebo název prostředku AVI. Pokud je tento parametr NULL, systém zavře klip AVI, který byl dříve otevřen pro ovládací prvek animace, pokud existuje.

Nid
Identifikátor prostředku AVI. Pokud je tento parametr NULL, systém zavře klip AVI, který byl dříve otevřen pro ovládací prvek animace, pokud existuje.

Návratová hodnota

Nenulové, pokud je úspěšné; jinak nula.

Poznámky

Prostředek AVI se načte z modulu, který vytvořil ovládací prvek animace.

Open nepodporuje zvuk v klipu AVI; můžete otevřít pouze tiché avi klipy.

Pokud má ACS_AUTOPLAY ovládací prvek animace styl, ovládací prvek animace se automaticky spustí přehrávání klipu hned po jeho otevření. Klip se bude dál přehrávat na pozadí, zatímco vaše vlákno bude pokračovat v provádění. Po přehrání klipu se automaticky opakuje.

Pokud má ACS_CENTER ovládací prvek animace styl, klip AVI se zacentruje do ovládacího prvku a velikost ovládacího prvku se nezmění. Pokud ovládací prvek animace nemá ACS_CENTER styl, změní se velikost ovládacího prvku při otevření klipu AVI na velikost obrázků v klipu AVI. Umístění levého horního rohu ovládacího prvku se nezmění, pouze velikost ovládacího prvku.

Pokud ovládací prvek animace má ACS_TRANSPARENT styl, bude první rámeček kreslen pomocí průhledného pozadí místo barvy pozadí zadané v animačním klipu.

Příklad

Podívejte se na příklad pro CAnimateCtrl::CAnimateCtrl.

CAnimateCtrl::P lay

Voláním této funkce přehrajete klip AVI v ovládacím prvku animace.

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

Parametry

nFrom
Index s nulovým základem rámce, na kterém začíná přehrávání. Hodnota musí být menší než 65 536. Hodnota 0 znamená, že začíná prvním rámečkem v klipu AVI.

nTo
Index s nulovou hodnotou rámce, kde přehrávání končí. Hodnota musí být menší než 65 536. Hodnota - 1 znamená konec posledním rámečkem v klipu AVI.

nRep
Počet opakování klipu AVI Hodnota - 1 znamená, že se soubor po neomezenou dobu přehraje.

Návratová hodnota

Nenulové, pokud je úspěšné; jinak nula.

Poznámky

Ovládací prvek animace přehraje klip na pozadí, zatímco vlákno bude pokračovat v provádění. Pokud ovládací prvek animace má ACS_TRANSPARENT styl, přehraje se klip AVI pomocí průhledného pozadí, nikoli barvy pozadí zadané v animačním klipu.

Příklad

Podívejte se na příklad pro CAnimateCtrl::CAnimateCtrl.

CAnimateCtrl::Seek

Voláním této funkce staticky zobrazíte jeden rámeček klipu AVI.

BOOL Seek(UINT nTo);

Parametry

nTo
Index rámce založený na nule, který se má zobrazit. Hodnota musí být menší než 65 536. Hodnota 0 znamená zobrazení prvního snímku v klipu AVI. Hodnota -1 znamená zobrazení posledního snímku v klipu AVI.

Návratová hodnota

Nenulové, pokud je úspěšné; jinak nula.

Poznámky

Pokud ovládací prvek animace má ACS_TRANSPARENT styl, klip AVI se bude kreslit pomocí průhledného pozadí místo barvy pozadí zadané v animačním klipu.

Příklad

Podívejte se na příklad pro CAnimateCtrl::CAnimateCtrl.

CAnimateCtrl::Stop

Voláním této funkce zastavíte přehrávání klipu AVI v ovládacím prvku animace.

BOOL Stop();

Návratová hodnota

Nenulové, pokud je úspěšné; jinak nula.

Příklad

Podívejte se na příklad pro CAnimateCtrl::CAnimateCtrl.

Viz také

CWnd – třída
Graf hierarchie
CAnimateCtrl::Create
ON_CONTROL