ID do artigo: 66949 - Última revisão: quinta-feira, 30 de outubro de 2003 - Revisão: 3.0

INFO: Windows Metafile funções & Aldus metarquivos colocação

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

Sumário

Muitos aplicativos baseados no Windows importar ou exportar metarquivos do Windows em um formato conhecido como o formato de metarquivo colocação Aldus (APM). Nesse formato, esses metarquivos não podem ser usados com as funções de metarquivo do Windows, como GetMetaFile(), CopyMetaFile(), PlayMetaFile() e assim por diante. Para usar esses metarquivos, o cabeçalho APM deve ser removido do metarquivo e os bits de metarquivo restantes devem ser escritos para um metarquivo recém-criado.

Mais Informações

O cabeçalho APM é de 22 bytes de comprimento e é definido da seguinte forma:
   typedef struct
     {
     DWORD   key;
     HANDLE  hmf;
     RECT    bbox;
     WORD    inch;
     DWORD   reserved;
     WORD    checksum;
     } APMFILEHEADER;
				
o fragmento de código a seguir demonstra como criar um metarquivo do Windows baseados em memória de um metarquivo de colocação Aldus que funcionará com as funções de metarquivo fornecidas pelo Windows.

A colocação metarquivos do Windows também estão documentados em páginas 26 27 do "referência do programador, volume 4: recursos" manual de documentação do SDK do Windows 3.1.

Código de exemplo

   BOOL RenderAPM (fh)
   int   fh; // a file handle to the APM metafile is passed in
   {
       HANDLE           hData;
       LPSTR            lpData;
       DWORD            OffsetToMeta;
       METAHEADER       mfHeader;
       APMFILEHEADER    APMHeader;

       OffsetToMeta = sizeof(APMHeader);

   // Seek to beginning of file and read APM header
       _llseek(fh, 0, 0);
       if (!_lread(fh, (LPSTR)&APMHeader, sizeof(APMFILEHEADER)))
           // Error in reading the file
           return(FALSE);

   // Return to read metafile header
       _llseek(fh, OffsetToMeta, 0);
       if (!_lread(fh, (LPSTR)&mfHeader, sizeof(METAHEADER)))
           // Error in reading
           return(FALSE);

   // Allocate memory for memory based metafile
       if (!(hData = GlobalAlloc(GHND, (mfHeader.mtSize * 2L))))
           return(FALSE);
   // Were we successful?
       if (!(lpData = GlobalLock(hData)))
       {
           // Error in allocation
           GlobalFree(hData);
           return(FALSE);
       }

   // Read metafile bits
       _llseek(fh, OffsetToMeta, 0);
       if (!_lread(fh, lpData, (mfHeader.mtSize * 2L)))
       {
           // Error in reading
           GlobalUnlock(hData);
           GlobalFree(hData);
           return(FALSE);
       }

   // Create the METAFILE with the bits we read in.
       if (!(hMF = SetMetaFileBits(hData)))
           return(FALSE);

       GlobalUnlock(hData);

   // Close the APM file
       _lclose(fh);

   // Return success
       return(TRUE);
   }
				

A informação contida neste artigo aplica-se a:
  • Microsoft Windows Software Development Kit 3.0
  • Microsoft Windows Software Development Kit 3.1
Palavras-chave: 
kbmt kb16bitonly KB66949 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 traduzido ou revisto por pessoas. A Microsoft possui artigos traduzidos por aplicações (MT) e artigos traduzidos por tradutores profissionais, com o objetivo de oferecer em português a totalidade dos artigos existentes na base de dados de suporte. No entanto, a tradução automática não é sempre perfeita, podendo conter erros de vocabulário, sintaxe ou gramática. A Microsoft não é responsável por incoerências, erros ou prejuízos ocorridos em decorrência da utilização dos artigos MT por parte dos nossos clientes. A Microsoft realiza atualizações freqüentes ao software de tradução automática (MT). Obrigado.
Clique aqui para ver a versão em Inglês deste artigo: 66949  (http://support.microsoft.com/kb/66949/en-us/ )
Retired KB ArticleAviso de Isenção de Responsabilidade sobre Conteúdo do KB Aposentado
Este artigo trata de produtos para os quais a Microsoft não mais oferece suporte. Por esta razão, este artigo é oferecido "como está" e não será mais atualizado.