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 CAnimateCtrlfinden Sie unter "Steuerelemente und Verwenden von CAnimateCtrl".

Vererbungshierarchie

CObject

CCmdTarget

CWnd

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