ID do artigo: 196299 - Última revisão: segunda-feira, 11 de julho de 2005 - Revisão: 1.2

Erro: ExtCreatePen funcionalidade não disponível no metarquivo avançado

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

Sintomas

Quando você cria um metarquivo avançado no Windows 95 ou Windows 98, chamadas de criação de caneta são armazenadas como registros EMR_CREATEPEN em vez de EMR_EXTCREATEPEN registros. Isso resulta em perda de informações, que altera a aparência da imagem. Esse problema não ocorre no Windows NT.

Situação

A Microsoft confirmou que este é um problema nos produtos da Microsoft listados no começo deste artigo.

Mais Informações

Se você executar o código a seguir em um contexto de dispositivo (DC) de metarquivo avançado e, em seguida, repetir o metarquivo resultante, os traços de caneta não aparecem como eles foram registrados. Se, por outro lado, você deve executar o código em uma tela DC, tudo aparece corretamente.

Código de exemplo

   BOOL TestDrawOnDC( HDC hDC )
   {
      LOGBRUSH   lb;
      int         i;
      int         iEnd[3]  = { PS_ENDCAP_ROUND,
                               PS_ENDCAP_SQUARE,
                               PS_ENDCAP_FLAT },
                  iJoin[3] = { PS_JOIN_BEVEL,
                               PS_JOIN_MITER,
                               PS_JOIN_ROUND };
      HPEN      hPen, hOldPen;

      lb.lbStyle = BS_SOLID ;
      lb.lbColor = RGB (128, 128, 128) ;
      lb.lbHatch = 0 ;

      for( i=0; i<3; i++ )
      {
         hPen = ExtCreatePen( PS_SOLID |
                              PS_GEOMETRIC |
                              iEnd [i] |
                              iJoin [i],
                              10, &lb, 0, NULL );
         hOldPen = SelectObject( hDC, hPen );

         BeginPath( hDC );
         MoveToEx( hDC, 10 +  30 * i, 65, NULL );
         LineTo( hDC, 20 +  30 * i, 75 );
         LineTo( hDC, 30 + 30 * i, 65 );
         EndPath( hDC );
         StrokePath( hDC );

         SelectObject( hDC, hOldPen );
         DeleteObject( hPen );
      }

      return TRUE;
   }
				

A informação contida neste artigo aplica-se a:
  • Microsoft Platform Software Development Kit-January 2000 Edition nas seguintes plataformas
    • Microsoft Windows 95
    • Microsoft Windows 98 Standard Edition
Palavras-chave: 
kbmt kbbug kbcode kbgdi kbmetafile KB196299 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: 196299  (http://support.microsoft.com/kb/196299/en-us/ )