Share via


CAnimateCtrl, classe

Fournit les fonctionnalités du contrôle commun d'animation Windows.

Syntaxe

class CAnimateCtrl : public CWnd

Membres

Constructeurs publics

Nom Description
CAnimateCtrl ::CAnimateCtrl Construit un objet CAnimateCtrl.

Méthodes publiques

Nom Description
CAnimateCtrl ::Close Ferme le clip AVI.
CAnimateCtrl ::Create Crée un contrôle d’animation et l’attache à un CAnimateCtrl objet.
CAnimateCtrl ::CreateEx Crée un contrôle d’animation avec les styles étendus Windows spécifiés et l’attache à un CAnimateCtrl objet.
CAnimateCtrl ::IsPlaying Indique si un clip audio-vidéo entrelacé (AVI) est en cours de lecture.
CAnimateCtrl ::Open Ouvre un clip AVI à partir d’un fichier ou d’une ressource et affiche le premier frame.
CAnimateCtrl ::P lay Lit le clip AVI sans son.
CAnimateCtrl ::Seek Affiche un cadre unique sélectionné du clip AVI.
CAnimateCtrl ::Stop Arrête de lire le clip AVI.

Notes

Ce contrôle (et par conséquent la CAnimateCtrl classe) est disponible uniquement pour les programmes exécutés sous Windows 95, Windows 98 et Windows NT version 3.51 et ultérieure.

Un contrôle d’animation est une fenêtre rectangulaire qui affiche un clip au format AVI (Audio Video Interleaved), le format vidéo/audio Windows standard. Un clip AVI est une série d’images bitmap, comme un film.

Les contrôles d’animation peuvent lire uniquement des clips AVI simples. Plus précisément, les clips à lire par un contrôle d’animation doivent répondre aux exigences suivantes :

  • Il doit y avoir exactement un flux vidéo et il doit avoir au moins une image.

  • Il peut y avoir au maximum deux flux dans le fichier (généralement l’autre flux, le cas échéant, est un flux audio, bien que le contrôle d’animation ignore les informations audio).

  • Le clip doit être décompressé ou compressé avec la compression RLE8.

  • Aucune modification de palette n’est autorisée dans le flux vidéo.

Vous pouvez ajouter le clip AVI à votre application en tant que ressource AVI, ou il peut accompagner votre application en tant que fichier AVI distinct.

Étant donné que votre thread continue à s’exécuter pendant l’affichage du clip AVI, l’une des utilisations courantes d’un contrôle d’animation consiste à indiquer l’activité système pendant une longue opération. Par exemple, la boîte de dialogue Rechercher de Explorateur de fichiers affiche une loupe mobile lorsque le système recherche un fichier.

Si vous créez un CAnimateCtrl objet dans une boîte de dialogue ou à partir d’une ressource de dialogue à l’aide de l’éditeur de boîte de dialogue, il est automatiquement détruit lorsque l’utilisateur ferme la boîte de dialogue.

Si vous créez un CAnimateCtrl objet dans une fenêtre, vous devrez peut-être le détruire. Si vous créez l’objet CAnimateCtrl sur la pile, il est détruit automatiquement. Si vous créez l’objet CAnimateCtrl sur le tas à l’aide de la new fonction, vous devez appeler delete l’objet pour le détruire. Si vous dérivez une nouvelle classe et CAnimateCtrl allouez une mémoire dans cette classe, remplacez le CAnimateCtrl destructeur pour supprimer les allocations.

Pour plus d’informations sur l’utilisation CAnimateCtrl, consultez Contrôles et utilisation de CAnimateCtrl.

Hiérarchie d'héritage

CObject

CCmdTarget

CWnd

CAnimateCtrl

Spécifications

En-tête : afxcmn.h

CAnimateCtrl ::CAnimateCtrl

Construit un objet CAnimateCtrl.

CAnimateCtrl();

Notes

Vous devez appeler la fonction Créer un membre avant de pouvoir effectuer d’autres opérations sur l’objet que vous créez.

Exemple

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

Ferme le clip AVI qui a été ouvert précédemment dans le contrôle d’animation (le cas échéant) et le supprime de la mémoire.

BOOL Close();

Valeur de retour

Valeur différente de zéro en cas de réussite ; sinon, zéro.

Exemple

Consultez l’exemple de CAnimateCtrl ::CAnimateCtrl.

CAnimateCtrl ::Create

Crée un contrôle d’animation et l’attache à un CAnimateCtrl objet.

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

Paramètres

dwStyle
Spécifie le style du contrôle d’animation. Appliquez n’importe quelle combinaison des styles windows décrits dans la section Remarques ci-dessous et les styles de contrôle d’animation décrits dans Les styles de contrôle d’animation dans le Kit de développement logiciel (SDK) Windows.

Rect
Spécifie la position et la taille du contrôle d’animation. Il peut s’agir d’un objet CRect ou d’une structure RECT .

pParentWnd
Spécifie la fenêtre parente du contrôle d’animation, généralement un CDialog. Elle ne doit pas être NULL.

nID
Spécifie l’ID du contrôle d’animation.

Valeur de retour

Valeur différente de zéro en cas de réussite ; sinon, zéro.

Notes

Vous construisez une CAnimateCtrl étape en deux étapes. Tout d’abord, appelez le constructeur, puis appelez Create, qui crée le contrôle d’animation et l’attache à l’objet CAnimateCtrl .

Appliquez les styles de fenêtre suivants à un contrôle d’animation.

  • WS_CHILD Always

  • WS_VISIBLE Généralement

  • WS_DISABLED Rarement

Si vous souhaitez utiliser des styles windows étendus avec votre contrôle d’animation, appelez CreateEx au lieu de Create.

En plus des styles de fenêtre répertoriés ci-dessus, vous pouvez appliquer un ou plusieurs styles de contrôle d’animation à un contrôle d’animation. Pour plus d’informations sur les styles de contrôle d’animation, consultez le Kit de développement logiciel (SDK) Windows.

Exemple

Consultez l’exemple de CAnimateCtrl ::CAnimateCtrl.

CAnimateCtrl ::CreateEx

Crée un contrôle (fenêtre enfant) et l’associe à l’objet CAnimateCtrl .

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

Paramètres

dwExStyle
Spécifie le style étendu du contrôle en cours de création. Pour obtenir la liste des styles Windows étendus, consultez le paramètre dwExStyle pour CreateWindowEx dans le Kit de développement logiciel (SDK) Windows.

dwStyle
Spécifie le style du contrôle d’animation. Appliquez n’importe quelle combinaison des styles de contrôle d’animation et de fenêtre décrits dans les styles de contrôle d’animation dans le Kit de développement logiciel (SDK) Windows.

Rect
Référence à une structure RECT décrivant la taille et la position de la fenêtre à créer, dans les coordonnées clientes de pParentWnd.

pParentWnd
Pointeur vers la fenêtre qui est le parent du contrôle.

nID
ID de la fenêtre enfant du contrôle.

Valeur de retour

Valeur différente de zéro cas de réussite ; sinon, 0.

Notes

Utilisez CreateEx plutôt que Créer pour appliquer des styles Windows étendus, spécifiés par le préface de style étendu Windows WS_EX_.

CAnimateCtrl ::IsPlaying

Indique si un clip audio-vidéo entrelacé (AVI) est en cours de lecture.

BOOL IsPlaying() const;

Valeur de retour

TRUE si un clip AVI est en cours de lecture ; sinon, FALSE.

Notes

Cette méthode envoie le message ACM_ISPLAYING , qui est décrit dans le Kit de développement logiciel (SDK) Windows.

CAnimateCtrl ::Open

Appelez cette fonction pour ouvrir un clip AVI et afficher son premier cadre.

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

Paramètres

lpszFileName
Objet CString ou pointeur vers une chaîne terminée par null qui contient le nom du fichier AVI ou le nom d’une ressource AVI. Si ce paramètre est NULL, le système ferme le clip AVI précédemment ouvert pour le contrôle d’animation, le cas échéant.

nID
Identificateur de ressource AVI. Si ce paramètre est NULL, le système ferme le clip AVI précédemment ouvert pour le contrôle d’animation, le cas échéant.

Valeur de retour

Valeur différente de zéro en cas de réussite ; sinon, zéro.

Notes

La ressource AVI est chargée à partir du module qui a créé le contrôle d’animation.

Open ne prend pas en charge le son dans un clip AVI ; vous ne pouvez ouvrir que des clips AVI silencieux.

Si le contrôle d’animation a le ACS_AUTOPLAY style, le contrôle d’animation démarre automatiquement la lecture du clip immédiatement après son ouverture. Il continuera à lire le clip en arrière-plan pendant l’exécution de votre thread. Lorsque le clip est terminé, il est automatiquement répété.

Si le contrôle d’animation a le ACS_CENTER style, le clip AVI est centré dans le contrôle et la taille du contrôle ne change pas. Si le contrôle d’animation n’a pas le ACS_CENTER style, le contrôle est redimensionné lorsque le clip AVI est ouvert à la taille des images dans le clip AVI. La position du coin supérieur gauche du contrôle ne change pas, seule la taille du contrôle.

Si le contrôle d’animation a le ACS_TRANSPARENT style, le premier cadre est dessiné à l’aide d’un arrière-plan transparent plutôt que de la couleur d’arrière-plan spécifiée dans le clip d’animation.

Exemple

Consultez l’exemple de CAnimateCtrl ::CAnimateCtrl.

CAnimateCtrl ::P lay

Appelez cette fonction pour lire un clip AVI dans un contrôle d’animation.

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

Paramètres

nFrom
Index de base zéro de l’image où la lecture commence. La valeur doit être inférieure à 65 536. La valeur 0 signifie commencer par le premier cadre dans le clip AVI.

Nto
Index de base zéro du frame où la lecture se termine. La valeur doit être inférieure à 65 536. Valeur de - 1 signifie se terminer par le dernier cadre dans le clip AVI.

nRep
Nombre de fois pour relire le clip AVI. La valeur - 1 signifie relire le fichier indéfiniment.

Valeur de retour

Valeur différente de zéro en cas de réussite ; sinon, zéro.

Notes

Le contrôle d’animation va lire le clip en arrière-plan pendant l’exécution de votre thread. Si le contrôle d’animation a ACS_TRANSPARENT un style, le clip AVI est lu à l’aide d’un arrière-plan transparent plutôt que de la couleur d’arrière-plan spécifiée dans le clip d’animation.

Exemple

Consultez l’exemple de CAnimateCtrl ::CAnimateCtrl.

CAnimateCtrl ::Seek

Appelez cette fonction pour afficher statiquement un seul cadre de votre clip AVI.

BOOL Seek(UINT nTo);

Paramètres

Nto
Index de base zéro du frame à afficher. La valeur doit être inférieure à 65 536. La valeur 0 signifie afficher le premier cadre dans le clip AVI. La valeur -1 signifie afficher le dernier cadre dans le clip AVI.

Valeur de retour

Valeur différente de zéro en cas de réussite ; sinon, zéro.

Notes

Si le contrôle d’animation a ACS_TRANSPARENT un style, le clip AVI est dessiné à l’aide d’un arrière-plan transparent plutôt que de la couleur d’arrière-plan spécifiée dans le clip d’animation.

Exemple

Consultez l’exemple de CAnimateCtrl ::CAnimateCtrl.

CAnimateCtrl ::Stop

Appelez cette fonction pour arrêter de lire un clip AVI dans un contrôle d’animation.

BOOL Stop();

Valeur de retour

Valeur différente de zéro en cas de réussite ; sinon, zéro.

Exemple

Consultez l’exemple de CAnimateCtrl ::CAnimateCtrl.

Voir aussi

CWnd, classe
Graphique hiérarchique
CAnimateCtrl ::Create
ON_CONTROL