Klasa CAnimateCtrl
Udostępnia funkcje typowej kontrolki animacji systemu Windows.
Składnia
class CAnimateCtrl : public CWnd
Elementy członkowskie
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
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 Create
metodę , 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