Partilhar via


Classe CAnimateCtrl

Observação

A biblioteca Microsoft Foundation Classes (MFC) continua a ser suportada. No entanto, já não estamos a adicionar funcionalidades nem a atualizar a documentação.

Fornece a funcionalidade do controlo de animação comum do Windows.

Sintaxe

class CAnimateCtrl : public CWnd

Membros

Construtores Públicos

Nome Description
CAnimateCtrl::CAnimateCtrl Constrói um CAnimateCtrl objeto.

Métodos Públicos

Nome Description
CAnimateCtrl::Fechar Fecha o clip AVI.
CAnimateCtrl::Create Cria um controlo de animação e anexa-o a um CAnimateCtrl objeto.
CAnimateCtrl::CreateEx Cria um controlo de animação com os estilos Windows estendidos especificados e anexa-o a um CAnimateCtrl objeto.
CAnimateCtrl::IsPlaying Indica se está a ser reproduzido um clip Audio-Video Interleaved (AVI).
CAnimateCtrl::Open Abre um clip AVI de um ficheiro ou recurso e mostra o primeiro frame.
CAnimateCtrl::P lay Reproduz o vídeo AVI sem som.
CAnimateCtrl::Seek Mostra um único frame selecionado do clip AVI.
CAnimateCtrl::Stop Deixa de reproduzir o vídeo AVI.

Observações

Este controlo (e, portanto, a CAnimateCtrl classe) está disponível apenas para programas a correr sob Windows 95, Windows 98 e Windows NT versão 3.51 e posteriores.

Um controlo de animação é uma janela retangular que exibe um clip no formato AVI (Audio Video Interleaved) — o formato padrão de vídeo/áudio do Windows. Um clip AVI é uma série de frames bitmap, como um filme.

Os controlos de animação só podem reproduzir clips AVI simples. Especificamente, os clips a serem reproduzidos por um controlo de animação devem cumprir os seguintes requisitos:

  • Tem de haver exatamente um fluxo de vídeo e tem de ter pelo menos um frame.

  • No máximo podem existir dois fluxos no ficheiro (normalmente o outro fluxo, se presente, é um fluxo de áudio, embora o controlo de animação ignore a informação de áudio).

  • O clip deve ser descomprimido ou comprimido com compressão RLE8.

  • Não são permitidas alterações de paleta no fluxo de vídeo.

Pode adicionar o clip AVI à sua aplicação como recurso AVI, ou pode acompanhá-la como um ficheiro AVI separado.

Como o seu thread continua a executar enquanto o clip AVI é exibido, uma utilização comum de um controlo de animação é indicar atividade do sistema durante uma operação prolongada. Por exemplo, a caixa de diálogo Encontrar do Explorador de Ficheiros mostra uma lupa móvel enquanto o sistema procura um ficheiro.

Se criar um CAnimateCtrl objeto dentro de uma caixa de diálogo ou a partir de um recurso de diálogo usando o editor de diálogo, ele será automaticamente destruído quando o utilizador fechar a caixa de diálogo.

Se criares um CAnimateCtrl objeto dentro de uma janela, podes ter de o destruir. Se criares o CAnimateCtrl objeto na pilha, ele é destruído automaticamente. Se criares o CAnimateCtrl objeto no heap usando a new função, tens de invocar delete o objeto para o destruir. Se derivar uma nova classe e CAnimateCtrl alocar qualquer memória nessa classe, sobrepor o CAnimateCtrl destruidor para eliminar as alocações.

Para mais informações sobre a utilização CAnimateCtrlde , veja Controlos e Utilização de CAnimateCtrl.

Hierarquia de herança

CObject

CCmdTarget

CWnd

CAnimateCtrl

Requerimentos

Cabeçalho: afxcmn.h

CAnimateCtrl::CAnimateCtrl

Constrói um CAnimateCtrl objeto.

CAnimateCtrl();

Observações

Deve chamar a função Criar membro antes de poder realizar quaisquer outras operações no objeto que cria.

Example

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

Fecha o clip AVI que foi aberto anteriormente no controlo de animação (se houver) e remove-o da memória.

BOOL Close();

Valor de retorno

Não nulo se for bem-sucedido; caso contrário, zero.

Example

Veja o exemplo para CAnimateCtrl::CAnimateCtrl.

CAnimateCtrl::Create

Cria um controlo de animação e anexa-o a um CAnimateCtrl objeto.

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

Parâmetros

dwStyle
Especifica o estilo do controlo de animação. Aplique qualquer combinação dos estilos de janelas descritos na secção de Observações abaixo e dos estilos de controlo de animação descritos em Estilos de Controlo de Animação no SDK do Windows.

retângulo
Especifica a posição e o tamanho do controlo de animação. Pode ser um objeto CRect ou uma estrutura RECT .

pParentWnd
Especifica a janela pai do controlo de animação, normalmente um CDialog. Não pode ser NULL.

nID
Especifica o ID do controlo de animação.

Valor de retorno

Não nulo se for bem-sucedido; caso contrário, zero.

Observações

Constróis um A CAnimateCtrl em dois passos. Primeiro, chama o construtor, e depois chama Create, que cria o controlo de animação e o anexa ao CAnimateCtrl objeto.

Aplique os seguintes estilos de janela a um controlo de animação.

  • WS_CHILD Sempre

  • WS_VISIBLE Normalmente

  • WS_DISABLED Raramente

Se quiseres usar estilos de janelas estendidas com o controlo de animação, chama CreateEx em vez de Create.

Para além dos estilos de janela listados acima, pode querer aplicar um ou mais estilos de controlo de animação a um controlo de animação. Consulte o SDK do Windows para mais informações sobre estilos de controlo de animação.

Example

Veja o exemplo para CAnimateCtrl::CAnimateCtrl.

CAnimateCtrl::CreateEx

Cria um controlo (uma janela filha) e associa-o ao CAnimateCtrl objeto.

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

Parâmetros

dwExStyle
Especifica o estilo estendido do controlo que está a ser criado. Para uma lista de estilos estendidos do Windows, consulte o parâmetro dwExStyle para CreateWindowEx no SDK do Windows.

dwStyle
Especifica o estilo do controlo de animação. Aplique qualquer combinação dos estilos de controlo de janela e animação descritos em Estilos de Controlo de Animação no SDK do Windows.

retângulo
Uma referência a uma estrutura RECT que descreve o tamanho e a posição da janela a criar, em coordenadas cliente de pParentWnd.

pParentWnd
Um apontador para a janela que é o pai do controlo.

nID
O ID da janela criança do controlo.

Valor de retorno

Não nulo se for bem-sucedido; caso contrário, 0.

Observações

Use CreateEx em vez de Create para aplicar estilos estendidos do Windows, especificados pelo prefácio de estilo estendido do Windows WS_EX_.

CAnimateCtrl::IsPlaying

Indica se está a ser reproduzido um clip Audio-Video Interleaved (AVI).

BOOL IsPlaying() const;

Valor de retorno

TRUE se um clip AVI estiver a reproduzir; caso contrário, FALSO.

Observações

Este método envia a mensagem ACM_ISPLAYING , que é descrita no SDK do Windows.

CAnimateCtrl::Open

Chame esta função para abrir um clip AVI e mostrar o seu primeiro frame.

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

Parâmetros

lpszFileName
Um CString objeto ou um ponteiro para uma cadeia terminada em null que contém o nome do ficheiro AVI ou o nome de um recurso AVI. Se este parâmetro for NULL, o sistema fecha o clip AVI que foi anteriormente aberto para o controlo de animação, se existir.

nID
O identificador de recurso AVI. Se este parâmetro for NULL, o sistema fecha o clip AVI que foi anteriormente aberto para o controlo de animação, se existir.

Valor de retorno

Não nulo se for bem-sucedido; caso contrário, zero.

Observações

O recurso AVI é carregado a partir do módulo que criou o controlo de animação.

Open não suporta som num clip AVI; só podes abrir clips AVI silenciosos.

Se o controlo de animação tiver esse ACS_AUTOPLAY estilo, o controlo de animação começará automaticamente a reproduzir o clip imediatamente após o abrir. Continuará a reproduzir o clip em segundo plano enquanto o seu thread continua a ser executado. Quando o clip termina de ser reproduzido, será automaticamente repetido.

Se o controlo de animação tiver o mesmo ACS_CENTER estilo, o clip AVI ficará centrado no controlo e o tamanho do controlo não mudará. Se o controlo de animação não tiver o estilo, ACS_CENTER o controlo será redimensionado quando o clip AVI for aberto para o tamanho das imagens do clipe AVI. A posição do canto superior esquerdo do comando não muda, apenas o tamanho do comando.

Se o controlo de animação tiver esse ACS_TRANSPARENT estilo, o primeiro frame será desenhado usando um fundo transparente em vez da cor de fundo especificada no clip de animação.

Example

Veja o exemplo para CAnimateCtrl::CAnimateCtrl.

CAnimateCtrl::P lay

Chama esta função para reproduzir um clip AVI num controlo de animação.

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

Parâmetros

nDe
Índice baseado em zero do frame onde o jogo começa. O valor deve ser inferior a 65.536. Um valor de 0 significa que começa pelo primeiro frame do clip AVI.

nTo
Índice base zero do frame onde o jogo termina. O valor deve ser inferior a 65.536. Um valor de -1 significa terminar com o último frame do clip AVI.

nRep
Número de vezes para reproduzir o vídeo AVI. Um valor de -1 significa reproduzir o ficheiro indefinidamente.

Valor de retorno

Não nulo se for bem-sucedido; caso contrário, zero.

Observações

O controlo de animação vai reproduzir o clip em segundo plano enquanto a sua thread continua a ser executada. Se o controlo de animação tiver ACS_TRANSPARENT estilo, o clip AVI será reproduzido com um fundo transparente em vez da cor de fundo especificada no clip de animação.

Example

Veja o exemplo para CAnimateCtrl::CAnimateCtrl.

CAnimateCtrl::Seek

Chama esta função para mostrar estaticamente um único frame do teu clip AVI.

BOOL Seek(UINT nTo);

Parâmetros

nTo
Índice base zero do frame a mostrar. O valor deve ser inferior a 65.536. Um valor 0 significa mostrar o primeiro frame do clip AVI. Um valor de -1 significa mostrar o último fotograma do clip AVI.

Valor de retorno

Não nulo se for bem-sucedido; caso contrário, zero.

Observações

Se o controlo de animação tiver ACS_TRANSPARENT estilo, o clip AVI será desenhado com um fundo transparente em vez da cor de fundo especificada no clip de animação.

Example

Veja o exemplo para CAnimateCtrl::CAnimateCtrl.

CAnimateCtrl::Stop

Chama esta função para parar de reproduzir um clip AVI num controlo de animação.

BOOL Stop();

Valor de retorno

Não nulo se for bem-sucedido; caso contrário, zero.

Example

Veja o exemplo para CAnimateCtrl::CAnimateCtrl.

Consulte também

Classe CWnd
Gráfico de Hierarquia
CAnimateCtrl::Create
ON_CONTROL