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í CAnimateCtrl
naleznete v tématu Ovládací prvky a použití CAnimateCtrl.
Hierarchie dědičnosti
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