Compartilhar via


Sobre controles de animação

Um controle de animação é uma janela que exibe um clipe AVI (Audio-Video Interleaved). Um clipe AVI é uma série de quadros bitmap como um filme. Os controles de animação só podem exibir clipes AVI que não contêm áudio.

Um uso comum para um controle de animação é indicar a atividade do sistema durante uma operação longa. Isso é possível porque o thread de operação continua sendo executado enquanto o clipe AVI é exibido. Por exemplo, a caixa de diálogo Localizar do Windows Explorer exibe uma lupa móvel enquanto o sistema procura um arquivo.

Observação

Se você estiver usando ComCtl32.dll versão 6, o thread não é suportado; certifique-se de que seu aplicativo não bloqueie a interface do usuário, caso contrário, a animação não ocorrerá.

 

Um controle de animação pode exibir um clipe AVI originado de um arquivo AVI não compactado ou de um arquivo AVI que foi compactado usando codificação de comprimento de execução (BI_RLE8). Você pode adicionar o clipe AVI ao seu aplicativo como um recurso AVI, ou o clipe pode acompanhar seu aplicativo como um arquivo AVI separado.

Observação

O arquivo AVI, ou recurso, não deve ter um canal de som. Os recursos do controle de animação são muito limitados e estão sujeitos a alterações. Se você precisar de um controle para fornecer recursos de reprodução e gravação multimídia para seu aplicativo, poderá usar o controle MCIWnd. Para obter mais informações, consulte Classe de janela MCIWnd.

 

Esta seção aborda os seguintes tópicos.

Criação de controle de animação

Um controle de animação pertence à classe de janela ANIMATE_CLASS . Criar um controle de animação usando a função CreateWindow ou CreateWindowEx ou a macro Animate_Create. A macro posiciona o controle de animação no canto superior esquerdo da janela pai e, se o estilo ACS_CENTER não for especificado, define a largura e a altura do controle com base nas dimensões de um quadro no clipe AVI. Se ACS_CENTER for especificado, Animate_Create definirá a largura e a altura do controle como zero. Você pode usar a função SetWindowPos para definir a posição e o tamanho do controle.

Se você criar um controle de animação dentro de uma caixa de diálogo ou de um recurso de caixa de diálogo, o controle será destruído automaticamente quando o usuário fechar a caixa de diálogo. Se você criar um controle de animação dentro de uma janela, você deve destruir explicitamente o controle.

Sobre mensagens de controle de animação

Um aplicativo envia mensagens para um controle de animação para abrir, reproduzir, parar e fechar o clipe AVI correspondente. Cada mensagem tem uma ou mais macros que você pode usar em vez de enviá-la explicitamente.

Depois de criar um controle de animação, um aplicativo envia a mensagem ACM_OPEN para abrir um clipe AVI e carregá-lo na memória. A mensagem especifica o caminho de um arquivo AVI ou o nome de um recurso AVI. O sistema carrega o recurso AVI do módulo que criou o controle de animação.

Se o controle de animação tiver o estilo ACS_AUTOPLAY, o controle começará a reproduzir o clipe AVI imediatamente após o arquivo AVI ou recurso AVI ser aberto. Caso contrário, um aplicativo pode usar a mensagem ACM_PLAY para iniciar o clipe AVI. Um aplicativo pode parar o clipe a qualquer momento enviando a mensagem ACM_STOP. O último quadro reproduzido permanece exibido quando o controle termina de reproduzir o clipe AVI ou quando ACM_STOP é enviado.

Um controle de animação pode enviar dois códigos de notificação para sua janela pai: ACN_START e ACN_STOP. A maioria dos aplicativos não lida com nenhuma das notificações.

Para fechar o arquivo AVI ou o recurso AVI e removê-lo da memória, um aplicativo pode usar a macro Animate_Close, que envia ACM_OPEN com o nome do arquivo ou do recurso definido como NULL.

Processamento de mensagens padrão

Esta seção descreve as mensagens de janela manipuladas pelo procedimento de janela para a classe de janela ANIMATE_CLASS.

Mensagem Processamento realizado
WM_CLOSE Libera o arquivo AVI ou o recurso AVI associado ao controle de animação.
WM_DESTROY Libera o arquivo AVI ou recurso AVI, libera uma estrutura de dados interna e, em seguida, chama a função DefWindowProc.
WM_ERASEBKGND Apaga o plano de fundo da janela usando a cor de plano de fundo atual para controles estáticos.
WM_NCCREATE Aloca e inicializa uma estrutura de dados interna e, em seguida, chama DefWindowProc.
WM_NCHITTEST Retorna o valor de teste de acerto HTTRANSPARENT.
WM_PAINT Desenha um quadro AVI no controle de animação.
WM_SIZE Verifica se o controle tem o estilo ACS_CENTER. Se o controle não tiver, ele chama DefWindowProc. Caso contrário, ele centraliza a animação no controle, invalida o controle e, em seguida, chama DefWindowProc.