Registros de Metafile aprimorados

Um metafilo aprimorado é uma matriz de registros. Um registro de metafilo é uma estrutura ENHMETARECORD de comprimento variável. No início de cada registro de metafilo aprimorado está uma estrutura EMR , que contém dois membros. O primeiro membro, iType, identifica o tipo de registro que é a função GDI cujos parâmetros estão contidos no registro. Como as estruturas são variáveis de comprimento, o outro membro, nSize, contém o tamanho do registro. Imediatamente após o membro nSize estão os parâmetros restantes, se houver, da função GDI. O restante da estrutura contém dados adicionais que dependem do tipo de registro.

O primeiro registro em um metafilo aprimorado é sempre a estrutura ENHMETAHEADER , que é o cabeçalho de metafile aprimorado. O cabeçalho especifica as seguintes informações:

  • Tamanho do metafilo, em bytes
  • Dimensões do quadro de imagem, em unidades do dispositivo
  • Dimensões do quadro de imagem, em unidades .01-millimeter
  • Número de registros no metafile
  • Deslocamento para uma descrição de texto opcional
  • Tamanho da paleta opcional
  • Resolução do dispositivo original, em pixels
  • Resolução do dispositivo original, em milímetros

Uma descrição de texto opcional pode seguir o registro de cabeçalho. A descrição do texto descreve a imagem e o nome do autor. A paleta opcional especifica as cores usadas para criar o metafile aprimorado. Os registros restantes identificam as funções GDI usadas para criar a imagem. A saída hexadecimal a seguir corresponde a um registro gerado para uma chamada para a função SetMapMode .

00000011 0000000C 00000004 

O valor 0x00000011 especifica o tipo de registro (corresponde à constante EMR_SETMAPMODE definida no arquivo Wingdi.h). O valor 0x0000000C especifica o comprimento do registro, em bytes. O valor 0x00000004 identifica o modo de mapeamento (corresponde à constante MM_LOENGLISH definida na função SetMapMode ).

Para obter uma lista de tipos de registro adicionais, consulte Estruturas de Metafile.