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