Nota
O acesso a esta página requer autorização. Pode tentar iniciar sessão ou alterar os diretórios.
O acesso a esta página requer autorização. Pode tentar alterar os diretórios.
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
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