CAnimateCtrl-Klasse
Stellt die Funktionalität des allgemeinen Windows-Animationssteuerelements bereit.
Syntax
class CAnimateCtrl : public CWnd
Member
Öffentliche Konstruktoren
Name | Beschreibung |
---|---|
CAnimateCtrl::CAnimateCtrl | Erstellt ein CAnimateCtrl -Objekt. |
Öffentliche Methoden
Name | Beschreibung |
---|---|
CAnimateCtrl::Close | Schließt den AVI-Clip. |
CAnimateCtrl::Create | Erstellt ein Animationssteuerelement und fügt es an ein CAnimateCtrl Objekt an. |
CAnimateCtrl::CreateEx | Erstellt ein Animationssteuerelement mit den angegebenen erweiterten Windows-Formatvorlagen und fügt es an ein CAnimateCtrl Objekt an. |
CAnimateCtrl::IsPlaying | Gibt an, ob ein interleaved (AVI)-Clip (Audio-Video Interleaved, AVI) wiedergegeben wird. |
CAnimateCtrl::Open | Öffnet einen AVI-Clip aus einer Datei oder Ressource und zeigt den ersten Frame an. |
CAnimateCtrl::P lay | Gibt den AVI-Clip ohne Sound wieder. |
CAnimateCtrl::Seek | Zeigt einen ausgewählten einzelframe des AVI-Clips an. |
CAnimateCtrl::Stop | Beendet die Wiedergabe des AVI-Clips. |
Hinweise
Dieses Steuerelement (und daher die Klasse) ist nur für Programme verfügbar, die CAnimateCtrl
unter Windows 95, Windows 98 und Windows NT, Version 3.51 und höher ausgeführt werden.
Ein Animationssteuerelement ist ein rechteckiges Fenster, das einen Clip im AVI-Format (Audio Video Interleaved) anzeigt – das standardmäßige Windows-Video-/Audioformat. Ein AVI-Clip ist eine Reihe von Bitmapframes, z. B. ein Film.
Animationssteuerelemente können nur einfache AVI-Clips wiedergeben. Insbesondere müssen die Clips, die von einem Animationssteuerelement wiedergegeben werden sollen, die folgenden Anforderungen erfüllen:
Es muss genau ein Videostream vorhanden sein, und es muss mindestens einen Frame haben.
Es kann höchstens zwei Datenströme in der Datei geben (in der Regel ist der andere Stream, sofern vorhanden, ein Audiodatenstrom, obwohl das Animationssteuerelement Audioinformationen ignoriert).
Der Clip muss entweder nicht komprimiert oder mit der RLE8-Komprimierung komprimiert werden.
Im Videostream sind keine Palettenänderungen zulässig.
Sie können den AVI-Clip zu Ihrer Anwendung als AVI-Ressource hinzufügen, oder sie kann Ihre Anwendung als separate AVI-Datei begleiten.
Da Ihr Thread weiterhin ausgeführt wird, während der AVI-Clip angezeigt wird, besteht eine häufige Verwendung für ein Animationssteuerelement darin, die Systemaktivität während eines langen Vorgangs anzuzeigen. Im Dialogfeld "Suchen" von Explorer wird z. B. eine verschiebende Lupe angezeigt, während das System nach einer Datei sucht.
Wenn Sie ein CAnimateCtrl
Objekt in einem Dialogfeld oder aus einer Dialogressource mithilfe des Dialogfeld-Editors erstellen, wird es automatisch zerstört, wenn der Benutzer das Dialogfeld schließt.
Wenn Sie ein CAnimateCtrl
Objekt in einem Fenster erstellen, müssen Sie es möglicherweise zerstören. Wenn Sie das CAnimateCtrl
Objekt auf dem Stapel erstellen, wird es automatisch zerstört. Wenn Sie das CAnimateCtrl
Objekt mithilfe der new
Funktion auf dem Heap erstellen, müssen Sie das Objekt aufrufen delete
, um es zu zerstören. Wenn Sie eine neue Klasse von CAnimateCtrl
dieser Klasse ableiten und Speicher in dieser Klasse zuweisen, überschreiben Sie den CAnimateCtrl
Destruktor, um die Zuordnungen zu löschen.
Weitere Informationen zur Verwendung CAnimateCtrl
finden Sie unter "Steuerelemente und Verwenden von CAnimateCtrl".
Vererbungshierarchie
CAnimateCtrl
Anforderungen
Header: afxcmn.h
CAnimateCtrl::CAnimateCtrl
Erstellt ein CAnimateCtrl
-Objekt.
CAnimateCtrl();
Hinweise
Sie müssen die Create-Memberfunktion aufrufen, bevor Sie andere Vorgänge für das von Ihnen erstellte Objekt ausführen können.
Beispiel
// 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
Schließt den AVI-Clip, der zuvor im Animationssteuerelement (sofern vorhanden) geöffnet wurde, und entfernt ihn aus dem Arbeitsspeicher.
BOOL Close();
Rückgabewert
Ungleich 0, wenn erfolgreich, andernfalls 0.
Beispiel
Sehen Sie sich das Beispiel für CAnimateCtrl::CAnimateCtrl an.
CAnimateCtrl::Create
Erstellt ein Animationssteuerelement und fügt es an ein CAnimateCtrl
Objekt an.
virtual BOOL Create(
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
UINT nID);
Parameter
dwStyle
Gibt die Formatvorlage des Animationssteuerelements an. Wenden Sie eine beliebige Kombination der im Abschnitt "Hinweise" beschriebenen Fensterformatvorlagen und die in den Animationssteuerelementstilen im Windows SDK beschriebenen Formatvorlagen für Animationssteuerelemente an.
rect
Gibt die Position und Größe des Animationssteuerelements an. Es kann sich entweder um ein CRect-Objekt oder eine RECT-Struktur handeln.
pParentWnd
Gibt das übergeordnete Fenster des Animationssteuerelements an, in der Regel ein CDialog
. Er darf nicht NULL sein.
Nid
Gibt die ID des Animationssteuerelements an.
Rückgabewert
Ungleich 0, wenn erfolgreich, andernfalls 0.
Hinweise
Sie erstellen eine CAnimateCtrl
in zwei Schritten. Rufen Sie zuerst den Konstruktor auf, und rufen Sie ihn dann auf Create
, wodurch das Animationssteuerelement erstellt und an das CAnimateCtrl
Objekt angefügt wird.
Wenden Sie die folgenden Fensterformatvorlagen auf ein Animationssteuerelement an.
WS_CHILD Always
WS_VISIBLE in der Regel
WS_DISABLED selten
Wenn Sie erweiterte Fensterstile mit Dem Animationssteuerelement verwenden möchten, rufen Sie CreateEx anstelle von Create
.
Zusätzlich zu den oben aufgeführten Fensterformatvorlagen können Sie eines oder mehrere der Animationssteuerelementstile auf ein Animationssteuerelement anwenden. Weitere Informationen zu Animationssteuerelementstilen finden Sie im Windows SDK.
Beispiel
Sehen Sie sich das Beispiel für CAnimateCtrl::CAnimateCtrl an.
CAnimateCtrl::CreateEx
Erstellt ein Steuerelement (ein untergeordnetes Fenster) und ordnet es dem Objekt zu CAnimateCtrl
.
virtual BOOL CreateEx(
DWORD dwExStyle,
DWORD dwStyle,
const RECT& rect,
CWnd* pParentWnd,
UINT nID);
Parameter
dwExStyle
Gibt die erweiterte Formatvorlage des zu erstellenden Steuerelements an. Eine Liste der erweiterten Windows-Stile finden Sie unter dem dwExStyle-Parameter für CreateWindowEx im Windows SDK.
dwStyle
Gibt die Formatvorlage des Animationssteuerelements an. Wenden Sie eine beliebige Kombination der in den Animationssteuerelementformatvorlagen im Windows SDK beschriebenen Formatvorlagen für Fenster- und Animationssteuerelemente an.
rect
Ein Verweis auf eine RECT-Struktur , die die Größe und Position des zu erstellenden Fensters in Clientkoordinaten von pParentWnd beschreibt.
pParentWnd
Ein Zeiger auf das Fenster, das das übergeordnete Steuerelement ist.
Nid
Die Untergeordnete Fenster-ID des Steuerelements.
Rückgabewert
Ungleich Null, wenn erfolgreich, andernfalls 0 (Null).
Hinweise
Verwenden Sie CreateEx
anstelle von "Erstellen ", um erweiterte Windows-Formatvorlagen anzuwenden, die durch die erweiterte Windows-Formatvorlage WS_EX_ angegeben werden.
CAnimateCtrl::IsPlaying
Gibt an, ob ein interleaved (AVI)-Clip (Audio-Video Interleaved, AVI) wiedergegeben wird.
BOOL IsPlaying() const;
Rückgabewert
TRUE, wenn ein AVI-Clip wiedergegeben wird; andernfalls FALSE.
Hinweise
Diese Methode sendet die ACM_ISPLAYING Nachricht, die im Windows SDK beschrieben wird.
CAnimateCtrl::Open
Rufen Sie diese Funktion auf, um einen AVI-Clip zu öffnen und den ersten Frame anzuzeigen.
BOOL Open(LPCTSTR lpszFileName);
BOOL Open(UINT nID);
Parameter
lpszFileName
Ein CString
Objekt oder ein Zeiger auf eine mit Null beendete Zeichenfolge, die entweder den Namen der AVI-Datei oder den Namen einer AVI-Ressource enthält. Wenn dieser Parameter NULL ist, schließt das System ggf. den AVI-Clip, der zuvor für das Animationssteuerelement geöffnet wurde.
Nid
Der AVI-Ressourcenbezeichner. Wenn dieser Parameter NULL ist, schließt das System ggf. den AVI-Clip, der zuvor für das Animationssteuerelement geöffnet wurde.
Rückgabewert
Ungleich 0, wenn erfolgreich, andernfalls 0.
Hinweise
Die AVI-Ressource wird aus dem Modul geladen, das das Animationssteuerelement erstellt hat.
Open
unterstützt keinen Sound in einem AVI-Clip; Sie können nur automatische AVI-Clips öffnen.
Wenn das Animationssteuerelement über den ACS_AUTOPLAY
Stil verfügt, beginnt das Animationssteuerelement automatisch mit der Wiedergabe des Clips unmittelbar nach dem Öffnen. Der Clip wird weiterhin im Hintergrund wiedergegeben, während der Thread weiterhin ausgeführt wird. Wenn die Wiedergabe des Clips abgeschlossen ist, wird er automatisch wiederholt.
Wenn das Animationssteuerelement den ACS_CENTER
Stil aufweist, wird der AVI-Clip im Steuerelement zentriert, und die Größe des Steuerelements ändert sich nicht. Wenn das Animationssteuerelement nicht über die ACS_CENTER
Formatvorlage verfügt, wird die Größe des Steuerelements geändert, wenn der AVI-Clip in der Größe der Bilder im AVI-Clip geöffnet wird. Die Position der oberen linken Ecke des Steuerelements ändert sich nicht, nur die Größe des Steuerelements.
Wenn das Animationssteuerelement über die ACS_TRANSPARENT
Formatvorlage verfügt, wird der erste Frame mit einem transparenten Hintergrund und nicht mit der im Animationsclip angegebenen Hintergrundfarbe gezeichnet.
Beispiel
Sehen Sie sich das Beispiel für CAnimateCtrl::CAnimateCtrl an.
CAnimateCtrl::P lay
Rufen Sie diese Funktion auf, um einen AVI-Clip in einem Animationssteuerelement wiederzugeben.
BOOL Play(
UINT nFrom,
UINT nTo,
UINT nRep);
Parameter
nFrom
Nullbasierter Index des Frames, in dem die Wiedergabe beginnt. Der Wert muss kleiner als 65.536 sein. Der Wert 0 bedeutet, dass der erste Frame im AVI-Clip beginnt.
Nto
Nullbasierter Index des Frames, in dem die Wiedergabe endet. Der Wert muss kleiner als 65.536 sein. Ein Wert von - 1 bedeutet, dass der letzte Frame im AVI-Clip endet.
nRep
Anzahl der Wiederholungen des AVI-Clips. Ein Wert von - 1 bedeutet, dass die Datei unbegrenzt wiedergegeben wird.
Rückgabewert
Ungleich 0, wenn erfolgreich, andernfalls 0.
Hinweise
Das Animationssteuerelement gibt den Clip im Hintergrund wieder, während der Thread weiterhin ausgeführt wird. Wenn das Animationssteuerelement Stil aufweist ACS_TRANSPARENT
, wird der AVI-Clip mit einem transparenten Hintergrund und nicht mit der im Animationsclip angegebenen Hintergrundfarbe wiedergegeben.
Beispiel
Sehen Sie sich das Beispiel für CAnimateCtrl::CAnimateCtrl an.
CAnimateCtrl::Seek
Rufen Sie diese Funktion auf, um einen einzelnen Frame Ihres AVI-Clips statisch anzuzeigen.
BOOL Seek(UINT nTo);
Parameter
Nto
Nullbasierter Index des anzuzeigenden Frames. Der Wert muss kleiner als 65.536 sein. Der Wert 0 bedeutet, dass der erste Frame im AVI-Clip angezeigt wird. Ein Wert von -1 bedeutet, dass der letzte Frame im AVI-Clip angezeigt wird.
Rückgabewert
Ungleich 0, wenn erfolgreich, andernfalls 0.
Hinweise
Wenn das Animationssteuerelement Stil aufweist ACS_TRANSPARENT
, wird der AVI-Clip mit einem transparenten Hintergrund und nicht mit der im Animationsclip angegebenen Hintergrundfarbe gezeichnet.
Beispiel
Sehen Sie sich das Beispiel für CAnimateCtrl::CAnimateCtrl an.
CAnimateCtrl::Stop
Rufen Sie diese Funktion auf, um die Wiedergabe eines AVI-Clips in einem Animationssteuerelement zu beenden.
BOOL Stop();
Rückgabewert
Ungleich 0, wenn erfolgreich, andernfalls 0.
Beispiel
Sehen Sie sich das Beispiel für CAnimateCtrl::CAnimateCtrl an.
Siehe auch
CWnd-Klasse
Hierarchiediagramm
CAnimateCtrl::Create
ON_CONTROL