Compartilhar via


Classe CAnimateCtrl

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

Sintaxe

class CAnimateCtrl : public CWnd

Membros

Construtores públicos

Nome Descrição
CAnimateCtrl::CAnimateCtrl Constrói um objeto CAnimateCtrl.

Métodos públicos

Nome Descrição
CAnimateCtrl::Close Fecha o clipe AVI.
CAnimateCtrl::Create Cria um controle de animação e o anexa a um objeto CAnimateCtrl.
CAnimateCtrl::CreateEx Cria um controle de animação com os estilos estendidos especificados do Windows e o anexa a um objeto CAnimateCtrl.
CAnimateCtrl::IsPlaying Indica se um clipe AVI está sendo reproduzido.
CAnimateCtrl::Open Abre um clipe AVI de um arquivo ou recurso e exibe o primeiro quadro.
CAnimateCtrl::Play Reproduz o clipe AVI sem som.
CAnimateCtrl::Seek Exibe um único quadro selecionado do clipe AVI.
CAnimateCtrl::Stop Para de reproduzir o clipe AVI.

Comentários

Esse controle (e, portanto, a classe CAnimateCtrl) está disponível apenas para programas em execução no Windows 95, Windows 98 e Windows NT versões 3.51 e posteriores.

Um controle de animação é uma janela retangular que exibe um clipe no formato AVI, o formato padrão de vídeo/áudio do Windows. Um clipe AVI é uma série de quadros bitmap, como um filme.

Os controles de animação podem reproduzir apenas clipes AVI simples. Especificamente, os clipes a serem reproduzidos por um controle de animação devem atender aos seguintes requisitos:

  • Deve haver exatamente um fluxo de vídeo e ele deve ter pelo menos um quadro.

  • Pode haver no máximo dois fluxos no arquivo (normalmente, o outro fluxo, se presente, é um fluxo de áudio, embora o controle de animação ignore as informações de áudio).

  • O clipe deve estar descompactado ou estar compactado com compactação RLE8.

  • Nenhuma alteração de paleta é permitida no fluxo de vídeo.

Você pode adicionar o clipe AVI ao seu aplicativo como um recurso AVI ou ele pode acompanhar seu aplicativo como um arquivo AVI separado.

Como o thread continua em execução enquanto o clipe AVI é exibido, um uso comum para um controle de animação é indicar a atividade do sistema durante uma operação demorada. Por exemplo, a caixa de diálogo Localizar do Explorador de Arquivos exibe uma lupa móvel enquanto o sistema procura um arquivo.

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

Se você criar um objeto CAnimateCtrl dentro de uma janela, talvez seja necessário destruí-lo. Se você criar o objeto CAnimateCtrl na pilha, ele será destruído automaticamente. Se você criar o objeto CAnimateCtrl no heap usando a função new, deverá chamar delete no objeto para destruí-lo. Se você derivar uma nova classe de CAnimateCtrl e alocar qualquer memória nessa classe, substitua o destruidor CAnimateCtrl para descartar as alocações.

Para obter mais informações sobre como usar CAnimateCtrl, consulte Controles e Usar CAnimateCtrl.

Hierarquia de herança

CObject

CCmdTarget

CWnd

CAnimateCtrl

Requisitos

Cabeçalho: afxcmn.h

CAnimateCtrl::CAnimateCtrl

Constrói um objeto CAnimateCtrl.

CAnimateCtrl();

Comentários

Você deve chamar a função membro Criar antes de executar qualquer outra operação no objeto criado.

Exemplo

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

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

BOOL Close();

Valor de retorno

Diferente de zero se bem-sucedido; caso contrário, zero.

Exemplo

Consulte o exemplo de CAnimateCtrl::CAnimateCtrl.

CAnimateCtrl::Create

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

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

Parâmetros

dwStyle
Especifica o estilo do controle de animação. Aplique qualquer combinação dos estilos de janela descritos na seção Comentários abaixo e os estilos de controle de animação descritos em Estilos de Controle de Animação no SDK do Windows.

rect
Especifica a posição e o tamanho do controle de animação. Pode ser um objeto CRect ou uma estrutura RECT.

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

Nid
Especifica a ID do controle de animação.

Valor de retorno

Diferente de zero se bem-sucedido; caso contrário, zero.

Comentários

O CAnimateCtrl é construído em duas etapas. Primeiro, chame o construtor e, em seguida, chame Create, que cria o controle de animação e o anexa ao objeto CAnimateCtrl.

Aplique os estilos de janela a seguir a um controle de animação.

  • WS_CHILD sempre

  • WS_VISIBLE Habitualmente

  • WS_DISABLED Raramente

Se você quiser usar estilos de janela estendidos com seu controle de animação, chame CreateEx em vez de Create.

Além dos estilos de janela listados acima, convém aplicar um ou mais dos estilos de controle de animação a um controle de animação. Consulte o SDK do Windows para obter mais informações sobre os estilos de controle de animação.

Exemplo

Consulte o exemplo de CAnimateCtrl::CAnimateCtrl.

CAnimateCtrl::CreateEx

Cria um controle (uma janela filho) e o associa ao objeto CAnimateCtrl.

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

Parâmetros

dwExStyle
Especifica o estilo estendido do controle que está sendo criado. Para obter uma lista de estilos estendidos do Windows, confira o parâmetro dwExStyle para CreateWindowEx no SDK do Windows.

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

rect
Uma referência a uma estrutura RECT que descreve o tamanho e a posição da janela a ser criada, em coordenadas do cliente de pParentWnd.

pParentWnd
Um ponteiro para a janela que é pai do controle.

Nid
A ID da janela filho do controle.

Valor de retorno

Diferente de zero se tiver êxito; caso contrário, 0.

Comentários

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

CAnimateCtrl::IsPlaying

Indica se um clipe AVI está sendo reproduzido.

BOOL IsPlaying() const;

Valor de retorno

TRUE se um clipe AVI estiver sendo reproduzido; caso contrário, FALSE.

Comentários

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

CAnimateCtrl::Open

Chame essa função para abrir um clipe AVI e exibir seu primeiro quadro.

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

Parâmetros

lpszFileName
Um objeto CString ou um ponteiro para uma cadeia de caracteres terminada em nulo que contém o nome do arquivo AVI ou o nome de um recurso AVI. Se esse parâmetro for NULL, o sistema fechará o clipe AVI que foi aberto anteriormente para o controle de animação, se houver.

Nid
O identificador do recurso AVI. Se esse parâmetro for NULL, o sistema fechará o clipe AVI que foi aberto anteriormente para o controle de animação, se houver.

Valor de retorno

Diferente de zero se bem-sucedido; caso contrário, zero.

Comentários

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

Open não dá suporte a som em um clipe AVI; você pode abrir apenas clipes AVI sem som.

Se o controle de animação tiver o estilo ACS_AUTOPLAY, ele começará automaticamente a reproduzir o clipe imediatamente depois de abrir. Ele continuará a reproduzir o clipe em segundo plano enquanto o thread continua em execução. Quando o clipe terminar de ser reproduzido, ele será repetido automaticamente.

Se o controle de animação tiver o estilo ACS_CENTER, o clipe AVI será centralizado no controle e o tamanho do controle não será alterado. Se o controle de animação não tiver o estilo ACS_CENTER, o controle será redimensionado quando o clipe AVI for aberto para o tamanho das imagens no clipe AVI. A posição do canto superior esquerdo do controle não será alterada, apenas o tamanho do controle.

Se o controle de animação tiver o estilo ACS_TRANSPARENT, o primeiro quadro será desenhado usando um plano de fundo transparente em vez da cor da tela de fundo especificada no clipe de animação.

Exemplo

Consulte o exemplo de CAnimateCtrl::CAnimateCtrl.

CAnimateCtrl::Play

Chame essa função para reproduzir um clipe AVI em um controle de animação.

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

Parâmetros

nFrom
Índice baseado em zero do quadro no qual a reprodução começa. O valor precisa ser inferior a 65.536. O valor zero significa começar com o primeiro quadro no clipe AVI.

nTo
Índice baseado em zero do quadro no qual a reprodução termina. O valor precisa ser inferior a 65.536. O valor -1 significa terminar com o último quadro no clipe AVI.

nRep
Número de vezes para reproduzir o clipe AVI. O valor -1 significa repetir o arquivo indefinidamente.

Valor de retorno

Diferente de zero se bem-sucedido; caso contrário, zero.

Comentários

O controle de animação reproduzirá o clipe em segundo plano enquanto o thread continua em execução. Se o controle de animação tiver estilo ACS_TRANSPARENT, o clipe AVI será reproduzido usando um plano de fundo transparente em vez da cor da tela de fundo especificada no clipe de animação.

Exemplo

Consulte o exemplo de CAnimateCtrl::CAnimateCtrl.

CAnimateCtrl::Seek

Chame essa função para exibir estaticamente um único quadro do clipe AVI.

BOOL Seek(UINT nTo);

Parâmetros

nTo
Índice baseado em zero do quadro a ser exibido. O valor precisa ser inferior a 65.536. O valor zero significa exibir o primeiro quadro no clipe AVI. O valor -1 significa exibir o último quadro no clipe AVI.

Valor de retorno

Diferente de zero se bem-sucedido; caso contrário, zero.

Comentários

Se o controle de animação tiver estilo ACS_TRANSPARENT, o clipe AVI será desenhado usando um plano de fundo transparente em vez da cor da tela de fundo especificada no clipe de animação.

Exemplo

Consulte o exemplo de CAnimateCtrl::CAnimateCtrl.

CAnimateCtrl::Stop

Chame essa função para parar de reproduzir um clipe AVI em um controle de animação.

BOOL Stop();

Valor de retorno

Diferente de zero se bem-sucedido; caso contrário, zero.

Exemplo

Consulte o exemplo de CAnimateCtrl::CAnimateCtrl.

Confira também

Classe CWnd
Gráfico da hierarquia
CAnimateCtrl::Create
ON_CONTROL