EXEMPLO: SetPal.exe utiliza mciSendString() para alterar a paleta de .avi

Traduções de Artigos Traduções de Artigos
Artigo: 139746 - Ver produtos para os quais este artigo se aplica.
Este artigo foi arquivado. Este artigo é oferecido "tal como está" e deixará de ser actualizado.
Expandir tudo | Reduzir tudo

Nesta página

Sumário

O exemplo SetPal.exe demonstra como utilizar a cadeia de MCI (Media Control Interface) "setvideo paleta alça para" para alterar a paleta que será utilizada quando é reproduzido um ficheiro Audio-Video Interleaved (AVI).

Mais Informação

O ficheiro seguinte está disponível para transferência a partir do Centro de transferências da Microsoft:
SetPal.exe
Data de edição: 29-Abr de 1998

Para obter informações adicionais sobre como transferir ficheiros de suporte da Microsoft, clique no número de artigo que se segue para visualizar o artigo na Microsoft Knowledge Base:
119591Como obter ficheiros de suporte da Microsoft a partir de serviços on-line
Microsoft procedeu de vírus neste ficheiro. Microsoft utilizou o mais recente software de detecção de vírus que estava disponível na data em que o ficheiro foi publicado. O ficheiro é alojado em servidores com segurança avançada que o ajudam a impedir alterações não autorizadas ao ficheiro.


O modo de vídeo actual do monitor tem de ser um modo de vídeo palettized, tal como 256 cores, para a técnica para teve êxito porque a cadeia "setvideo paleta alça para" é ignorada em modos de vídeo não palettized. Além disso, o vídeo compressor/descompressor (codec) que descomprime o ficheiro .avi processa a paleta. Por conseguinte, o comportamento exacto pode depender o codec em utilização. Por exemplo, o codec de 1 de vídeo da MS é um codec de palettized 8 bits (256 cores) enquanto Indeo e Cinepak Codecs são 24 bits não-palettized Codecs, para que o respectivo comportamento de paleta pode diferir.

Os passos seguintes mostram como fornecer a suas próprias paleta:
  1. Preencha uma estrutura de LOGPALETTE que contém informações da paleta de cores.
  2. Crie uma paleta lógica utilizando a função CreatePalette().
  3. Chamar mciSendString() (ou mciSendCommand()) para fornecer essa paleta para o ficheiro AVI usando uma cadeia como:

    identificador de setvideo <alias> paleta < paleta alça >
Este artigo fornece mais informações e código excerpts da amostra SETPAL que efectuar estes passos.

Pode compilar o exemplo SetPal.exe como uma amostra de 32 bits, denominado SetPal32, ou como uma amostra de 16 bits, denominado SetPal16. Como resultado, é compatível com Windows 95, Windows NT e Windows 3.1. Ficheiros criar Setpal32.mak e Setpal16.mak são fornecidos. SetPal16 requer o vídeo para o Windows 1.1 Development Kit criar com êxito.

SetPal.exe é uma aplicação exemplo que lhe permite abrir um ficheiro .avi através da abrir caixa de diálogo comuns. Opções de menu permitir que o ficheiro .avi ser aberto, reproduzir, parado ou fechado. Cadeias MCI efectuar o trabalho subjacente. A seguinte cadeia MCI é utilizada para fornecer uma paleta para o ficheiro .AVI:
identificador de setvideo <alias> paleta < paleta alça >

Excerpts de Setpal.c

   // Include files.
   #include <windows.h>  // Required for all Windows applications
   #include "windowsx.h" // for GlobalAllocPtr/GlobalFreePtr in
                         // CreateSamplePalette.
   #include "mmsystem.h" // For the MCI calls.

   // Global variables.
   static HPALETTE g_hPal = NULL;    // Palette handle.
   .
   .
   .

   // CreateSamplePalette() demonstrates how to fill in a LOGPALETTE
   // structure and create a logical palette.
   VOID CreateSamplePalette(void)

   {
       LPLOGPALETTE lpLogPal;
       int          i;
       int          nPalEntries = 236;   // Number of entries in our
                                         // palette.
                                         // 256 are possible, but the
                                         // system reserves 20 of them.

       lpLogPal = (LPLOGPALETTE) GlobalAllocPtr (GHND,
                   sizeof (LOGPALETTE) + nPalEntries * sizeof
                   (PALETTEENTRY));

          lpLogPal->palVersion    = 0x300;
       lpLogPal->palNumEntries = nPalEntries;

       for (i = nPalEntries; i > 0; i--)
       {
           // Fill in the red, green, and blue values for our palette.
           // This particular palette is a wash from green to black.
           lpLogPal->palPalEntry[i].peRed   = 0;
           lpLogPal->palPalEntry[i].peGreen = i;
           lpLogPal->palPalEntry[i].peBlue  = 0;

           // Create unique palette entries. This flag may change depending
           // on your purposes. See the Windows API documentation
           // about the PALETTEENTRY structure for more information.
           lpLogPal->palPalEntry[i].peFlags = PC_NOCOLLAPSE;
       }

       // Create the logical palette.
       g_hPal = CreatePalette (lpLogPal);

       // Clean up.
       GlobalFreePtr (lpLogPal);
   }

   // The ProcessAVICommands() function in SETPAL.C handles the open, set
   // palette, play, and close for the AVI file. Once the AVI file has been
   // opened, issue an mciSendString() such as the following to set the
   // palette:

   static char szAlias[10] = "paltest";  // The movie alias to use in
   mciSendString                         // buffer to hold the MCI
   char szBuffer[128];                   // string we built.
   .
   .
   .
      wsprintf(szBuffer, "setvideo %s palette handle to %d",
              (LPSTR)szAlias, g_hPal);
      mciSendString(szBuffer, NULL, 0, NULL);
				

Propriedades

Artigo: 139746 - Última revisão: 1 de março de 2014 - Revisão: 4.4
A informação contida neste artigo aplica-se a:
  • Microsoft Windows Software Development Kit 3.1
  • Microsoft Platform Software Development Kit-January 2000 Edition nas seguintes plataformas
    • Microsoft Windows NT Server 3.5
    • Microsoft Windows NT Server 3.51
    • Microsoft Windows NT Server 4.0 Standard Edition
    • Microsoft Windows NT Workstation 3.5
    • Microsoft Windows NT Workstation 3.51
    • Microsoft Windows NT Workstation 4.0 Developer Edition
    • the operating system: Microsoft Windows 2000
Palavras-chave: 
kbnosurvey kbarchive kbmt kbdownload kbcode kbfile kbmm kbsample KB139746 KbMtpt
Traduçã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: 139746

Contact us for more help

Contact us for more help
Connect with Answer Desk for expert help.
Get more support from smallbusiness.support.microsoft.com