Artigo: 179907 - Última revisão: segunda-feira, 11 de Julho de 2005 - Revisão: 1.2

Como mostrar CAnimateCtrl com fundo transparente

Dica do SistemaEste artigo aplica-se a um sistema operativo diferente do que está a utilizar. Foi desactivado o conteúdo do artigo, que pode não ser relevante para si.

Nesta página

Expandir tudo | Reduzir tudo

Sumário

Este artigo mostra como apresentar ficheiros .avi com um fundo transparente. O controlo CAnimateCtrl suporta ficheiros .avi com um fundo transparente com um limite de 16 cores. O primeiro pixel na primeira moldura de um ficheiro .avi determina a cor de fundo do controlo CAnimateCtrl.

Mais Informação

Para visualizar um ficheiro .avi CDialog ou respectivas classes derivadas, terá de definir o estilo de CAnimateCtrl como ACM_TRANSPARENT. Se a cor do primeiro pixel na primeira moldura de um ficheiro .avi é diferente da cor de fundo do objecto CDialog, em seguida, a cor de fundo do objecto CDialog é utilizado como a cor de fundo do ficheiro .avi. Deste modo, o controlo CAminateCtrl terá um fundo transparente.

Para apresentar um ficheiro .avi CView ou respectivas classes derivadas, tem de interceptar na classe CView mensagem WM_CTLCOLOR e devolver um pincel nulo (não para ser confundidos com apenas devolver nulo) para o CAnimateCtrl. Além disso, tem de definir o estilo do CAnimateCtrl para ACM_TRANSPARENT. Caso contrário, a cor de fundo predefinida caixa de diálogo irá ser utilizada como a cor de fundo do controlo de animação.

Por exemplo, se um CView derivado classe é CTestanimctrlView, terá de adicionar o estilo ACM_TRANSPARENT CAnimateCtrl, adicione ON_WM_CTLCOLOR para o mapa de mensagem e adicione um processador de mensagens OnCtlColor para a classe CTestanimctrlView conforme descrito nos seguintes passos:

Código de exemplo

Adicione o seguinte código para o ficheiro .h de CTestanimctrlView:
   CAnimateCtrl* m_pMyAnimateCtrl;
      afx_msg HBRUSH OnCtlColor(CDC* pDC, CWnd* pWnd, UINT nCtlColor);
adicionar o código seguinte no ficheiro .cpp de CTestanimctrlView:
  1. Adicione o seguinte código CTestanimctrlView::OnInitialUpdate:
          // Create my animate control.
          m_pMyAnimateCtrl = new CAnimateCtrl;
    
             UINT styles = WS_CHILD |  ACS_TRANSPARENT |  ACS_AUTOPLAY;
             m_pMyAnimateCtrl->Create(styles, CRect(100, 50, 300, 300), this,
                ID_MYANIM);   // here ID_MYANIM is the ID of m_pMyAnimateCtrl
  2. Adicionar ON_MN_CTLCOLOR() num mapa de mensagem:
          BEGIN_MESSAGE_MAP(CTestanimctrlView, CView)
             //{{AFX_MSG_MAP(CTestanimctrlView)
             ON_WM_CTLCOLOR()
          END_MESSAGE_MAP()
  3. Adiciona o processador de mensagens para WM_CTLCOLOR:
          HBRUSH CCTestanimctrlView::OnCtlColor(CDC* pDC, CWnd* pWnd, UINT
             nCtlColor)
          {
             UINT id = pWnd->GetDlgCtrlID();
             if (id == ID_MYANIM)
                return (HBRUSH)GetStockObject(NULL_BRUSH);
    
             HBRUSH hbr = CView::OnCtlColor(pDC, pWnd, nCtlColor);
             return hbr;
          }
    					
  4. Libertar a memória utilizada pelo controlo animam:
          CTestanimctrlView::~CTestanimctrlView()
          {
             if (m_pMyAnimateCtrl) {
                m_pMyAnimateCtrl->DestroyWindow();
                delete m_pMyAnimateCtrl;
             }
          }

A informação contida neste artigo aplica-se a:
  • Microsoft Platform Software Development Kit-January 2000 Edition
  • Microsoft Foundation Class Library 4.2 nas seguintes plataformas
    • Microsoft Visual C++ 4.0 Standard Edition
    • Microsoft Visual C++ 4.0 Standard Edition
    • Microsoft Visual C++ 4.1 Subscription
    • Microsoft Visual C++ 4.2 Professional Edition
    • Microsoft Visual C++ 4.2 Enterprise Edition
    • Microsoft Visual C++ 4.2 Professional Edition
    • Microsoft Visual C++ 5.0 Enterprise Edition
    • Microsoft Visual C++ 5.0 Professional Edition
Palavras-chave: 
kbmt kbanimation kbctrl kbhowto KB179907 KbMtpt
Tradução automáticaTradução automática
IMPORTANTE: Este artigo foi traduzido por um sistema de tradução automática (também designado por Machine translation ou MT), não tendo sido portanto revisto ou traduzido por humanos. A Microsoft tem artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais. O objectivo é simples: oferecer em Português a totalidade dos artigos existentes na base de dados do suporte. Sabemos no entanto que a tradução automática não é sempre perfeita. Esta pode conter erros de vocabulário, sintaxe ou gramática? erros semelhantes aos que um estrangeiro realiza ao falar em Português. A Microsoft não é responsável por incoerências, erros ou estragos realizados na sequência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza actualizações frequentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 179907  (http://support.microsoft.com/kb/179907/en-us/ )