CAnimateCtrl (clase)

Proporciona la funcionalidad del control común de animación de Windows.

Sintaxis

class CAnimateCtrl : public CWnd

Miembros

Constructores públicos

Nombre Descripción
CAnimateCtrl::CAnimateCtrl Construye un objeto CAnimateCtrl.

Métodos públicos

Nombre Descripción
CAnimateCtrl::Close Cierra el clip AVI.
CAnimateCtrl::Create Crea un control de animación y lo asocia a un objeto CAnimateCtrl.
CAnimateCtrl::CreateEx Crea un control de animación con los estilos extendidos de Windows especificados y lo asocia a un objeto CAnimateCtrl.
CAnimateCtrl::IsPlaying Indica si se está reproduciendo un clip Audio-Video Interleaved (AVI).
CAnimateCtrl::Open Abre un clip AVI desde un archivo o recurso y muestra el primer fotograma.
CAnimateCtrl::Play Reproduce el clip AVI sin sonido.
CAnimateCtrl::Seek Muestra un fotograma único seleccionado del clip AVI.
CAnimateCtrl::Stop Deja de reproducir el clip AVI.

Comentarios

Este control (y, por tanto, la clase CAnimateCtrl) solo está disponible para los programas que se ejecutan en Windows 95, Windows 98 y Windows NT versión 3.51 y posteriores.

Un control de animación es una ventana rectangular que muestra un clip en formato AVI (Audio Video Interleaved), el formato estándar de audio y vídeo de Windows. Un clip AVI consta de una serie de fotogramas de mapa de bits, como una película.

Los controles de animación solo pueden reproducir clips AVI sencillos. En concreto, los clips que debe reproducir un control de animación deben cumplir los siguientes requisitos:

  • Debe haber exactamente una secuencia de vídeo y debe tener al menos un fotograma.

  • Puede haber como máximo dos secuencias en el archivo (normalmente la otra secuencia, si está presente, es una secuencia de audio, aunque el control de animación omite la información de audio).

  • El clip debe estar descomprimido o comprimido con compresión RLE8.

  • No se permiten cambios en la paleta en la secuencia de vídeo.

Puede agregar el clip AVI a la aplicación como un recurso AVI, o puede acompañar la aplicación como un archivo AVI independiente.

Dado que el subproceso continúa ejecutándose mientras se muestra el clip AVI, un uso común para un control de animación es indicar la actividad del sistema durante una operación larga. Por ejemplo, el cuadro de diálogo Buscar del Explorador de archivos muestra una lupa que se mueve cuando el sistema busca un archivo.

Si crea un objeto CAnimateCtrl dentro de un cuadro de diálogo o desde un recurso de cuadro de diálogo mediante el editor de diálogos, se destruirá automáticamente cuando el usuario cierre el cuadro de diálogo.

Si crea un objeto CAnimateCtrl dentro de una ventana, es posible que tenga que destruirlo. Si crea el objeto CAnimateCtrl en la pila, se destruye automáticamente. Si crea el objeto CAnimateCtrl en el montón mediante la función new, debe llamar a delete en el objeto para destruirlo. Si obtiene una nueva clase de CAnimateCtrl y asigna cualquier memoria de esa clase, invalide el destructor CAnimateCtrl para eliminar las asignaciones.

Para más información sobre el uso de CAnimateCtrl, consulte Controles y Uso de CAnimateCtrl.

Jerarquía de herencia

CObject

CCmdTarget

CWnd

CAnimateCtrl

Requisitos

Encabezado: afxcmn.h

CAnimateCtrl::CAnimateCtrl

Construye un objeto CAnimateCtrl.

CAnimateCtrl();

Comentarios

Antes de poder realizar cualquier otra operación en el objeto que cree, debe llamar a la función miembro Create.

Ejemplo

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

Cierra el clip AVI que se abrió anteriormente en el control de animación (si existe) y lo quita de la memoria.

BOOL Close();

Valor devuelto

Es distinto de cero si es correcto. En caso contrario, es cero.

Ejemplo

Vea el ejemplo de CAnimateCtrl::CAnimateCtrl.

CAnimateCtrl::Create

Crea un control de animación y lo asocia a un objeto CAnimateCtrl.

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

Parámetros

dwStyle
Especifica el estilo del control de animación. Aplique cualquier combinación de los estilos de ventana descritos en la sección Comentarios a continuación y los estilos de control de animación descritos en Estilos de control de animación en Windows SDK.

rect
Especifica la posición y el tamaño del control de animación. Puede ser un objeto CRect o una estructura RECT.

pParentWnd
Especifica la ventana principal del control de animación, normalmente CDialog. No debe ser NULL.

Nid
Especifica el identificador del control de animación.

Valor devuelto

Es distinto de cero si es correcto. En caso contrario, es cero.

Comentarios

El proceso de construcción de un elemento CAnimateCtrl se divide en dos pasos. En primer lugar, llame al constructor y, luego, llame a Create, que crea el control de animación y lo asocia al objeto CAnimateCtrl.

Aplica los siguientes estilos de ventana a un control de animación.

  • WS_CHILD siempre

  • WS_VISIBLE Normalmente

  • WS_DISABLED Rarely

Si quiere usar estilos de ventana extendidos con el control de animación, llama a CreateEx en lugar de Create.

Además de los estilos de ventana enumerados anteriormente, es posible que quiera aplicar uno o varios de los estilos de control de animación a un control de animación. Consulte Windows SDK para más información sobre los estilos de control de animación.

Ejemplo

Vea el ejemplo de CAnimateCtrl::CAnimateCtrl.

CAnimateCtrl::CreateEx

Esta función puede usarse para crear un control (una ventana secundaria) y asociarlo con el objeto CAnimateCtrl.

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

Parámetros

dwExStyle
El valor de este parámetro se usa para especificar el estilo extendido del control que se va a crear. Para ver una lista de estilos extendidos de Windows, consulte el parámetro dwExStyle para CreateWindowEx en Windows SDK.

dwStyle
Especifica el estilo del control de animación. Aplique cualquier combinación de los estilos de control de ventana y animación descritos en Estilos de control de animación en Windows SDK.

rect
Referencia a una estructura RECT que describe el tamaño y la posición de la ventana que se va a crear, en coordenadas de cliente de pParentWnd.

pParentWnd
Un puntero a la ventana que constituye el elemento primario del control.

Nid
El identificador de ventana secundaria del control.

Valor devuelto

Si es correcta, su valor es distinto de cero. En caso contrario, es cero.

Comentarios

Use CreateEx en lugar de Create para aplicar estilos extendidos de Windows, especificados por el prefacio de estilo extendido de Windows WS_EX_.

CAnimateCtrl::IsPlaying

Indica si se está reproduciendo un clip Audio-Video Interleaved (AVI).

BOOL IsPlaying() const;

Valor devuelto

TRUE si se está reproduciendo un clip AVI; de lo contrario, FALSE.

Comentarios

Este método envía el mensaje ACM_ISPLAYING, que se describe en Windows SDK.

CAnimateCtrl::Open

Llame a esta función para abrir un clip AVI y mostrar su primer fotograma.

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

Parámetros

lpszFileName
Objeto CString o puntero a una cadena terminada en NULL que contiene el nombre del archivo AVI o el nombre de un recurso AVI. Si este parámetro es NULL, el sistema cierra el clip AVI que se abrió anteriormente para el control de animación, si existe.

Nid
Identificador de recurso AVI. Si este parámetro es NULL, el sistema cierra el clip AVI que se abrió anteriormente para el control de animación, si existe.

Valor devuelto

Es distinto de cero si es correcto. En caso contrario, es cero.

Comentarios

El recurso AVI se carga desde el módulo que creó el control de animación.

Open no admite sonido en un clip AVI; solo puede abrir clips AVI silenciosos.

Si el control de animación tiene el estilo ACS_AUTOPLAY, comenzará automáticamente a reproducir el clip inmediatamente después de abrirlo. El clip se seguirá reproduciendo en segundo plano mientras el subproceso continúa ejecutándose. Cuando el clip haya terminado de reproducirse, se repetirá automáticamente.

Si el control de animación tiene el estilo ACS_CENTER, el clip AVI se centrará en el control y el tamaño del control no cambiará. Si el control de animación no tiene el estilo ACS_CENTER, el control cambiará de tamaño cuando se abra el clip AVI al tamaño de las imágenes que contiene. La posición de la esquina superior izquierda del control no cambiará, solo el tamaño del control.

Si el control de animación tiene el estilo ACS_TRANSPARENT, el primer fotograma se dibujará con un fondo transparente en lugar del color de fondo especificado en el clip de animación.

Ejemplo

Vea el ejemplo de CAnimateCtrl::CAnimateCtrl.

CAnimateCtrl::Play

Llame a esta función para reproducir un clip AVI en un control de animación.

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

Parámetros

nFrom
Índice de base cero del fotograma donde comienza la reproducción. El valor debe ser menor que 65 536. Un valor de 0 significa que se comenzará con el primer fotograma del clip AVI.

nTo
Índice de base cero del fotograma donde finaliza la reproducción. El valor debe ser menor que 65 536. Un valor de - 1 significa que se terminará con el último fotograma del clip AVI.

nRep
Número de veces que se va a reproducir el clip AVI. Un valor de - 1 significa se reproducirá el archivo indefinidamente.

Valor devuelto

Es distinto de cero si es correcto. En caso contrario, es cero.

Comentarios

El control de animación reproducirá el clip en segundo plano mientras el subproceso continúa ejecutándose. Si el control de animación tiene el estilo ACS_TRANSPARENT, el clip AVI se reproducirá con un fondo transparente en lugar del color de fondo especificado en el clip de animación.

Ejemplo

Vea el ejemplo de CAnimateCtrl::CAnimateCtrl.

CAnimateCtrl::Seek

Llame a esta función para mostrar estáticamente un solo fotograma del clip AVI.

BOOL Seek(UINT nTo);

Parámetros

nTo
Índice de base cero del fotograma que se va a mostrar. El valor debe ser menor que 65 536. Un valor de 0 significa que se mostrará el primer fotograma del clip AVI. Un valor de -1 significa que se mostrará el último fotograma del clip AVI.

Valor devuelto

Es distinto de cero si es correcto. En caso contrario, es cero.

Comentarios

Si el control de animación tiene el estilo ACS_TRANSPARENT, el clip AVI se dibujará con un fondo transparente en lugar del color de fondo especificado en el clip de animación.

Ejemplo

Vea el ejemplo de CAnimateCtrl::CAnimateCtrl.

CAnimateCtrl::Stop

Llame a esta función para dejar de reproducir un clip AVI en un control de animación.

BOOL Stop();

Valor devuelto

Es distinto de cero si es correcto. En caso contrario, es cero.

Ejemplo

Vea el ejemplo de CAnimateCtrl::CAnimateCtrl.

Consulte también

CWnd (clase)
Gráfico de jerarquías
CAnimateCtrl::Create
ON_CONTROL