Partilhar via


Contextos do dispositivo de exibição

Um aplicativo obtém um DC de exibição chamando o BeginPaint, GetDCou função GetDCEx e identificando a janela na qual a saída correspondente aparecerá. Normalmente, um aplicativo obtém um DC de exibição somente quando ele deve desenhar na área do cliente. No entanto, pode-se obter um de contexto do dispositivo de janela chamando a funçãoGetWindowDC. Quando o aplicativo terminar de desenhar, ele deve liberar o DC chamando o EndPaint ou função de ReleaseDC.

Existem cinco tipos de DCs para monitores de vídeo:

  • Classe
  • Frequentes
  • Privado
  • Janela
  • Pai

Contextos de dispositivo de classe

Contextos de dispositivo de classe são suportados estritamente para compatibilidade com versões de 16 bits do Windows. Ao escrever seu aplicativo, evite usar o contexto do dispositivo de classe; Em vez disso, use um contexto de dispositivo privado.

Contextos comuns de dispositivos

Contextos de dispositivos comuns são DCs de exibição mantidos em um cache especial pelo sistema. Contextos de dispositivo comuns são usados em aplicativos que executam operações de desenho pouco frequentes. Antes de retornar o identificador DC, o sistema inicializa o contexto comum do dispositivo com objetos, atributos e modos padrão. Todas as operações de desenho executadas pelo aplicativo usam esses padrões, a menos que uma das funções GDI seja chamada para selecionar um novo objeto, alterar os atributos de um objeto existente ou selecionar um novo modo.

Como existe apenas um número limitado de contextos de dispositivos comuns, um aplicativo deve liberá-los depois de terminar o desenho. Quando o aplicativo libera um contexto de dispositivo comum, todas as alterações nos dados padrão são perdidas.

Contextos de dispositivos privados

Contextos de dispositivo privado são DCs de exibição que, ao contrário dos contextos de dispositivo comuns, retêm quaisquer alterações nos dados padrão mesmo depois que um aplicativo os libera. Os contextos de dispositivos privados são usados em aplicativos que executam várias operações de desenho, como aplicativos de desenho assistido por computador (CAD), aplicativos de editoração eletrônica, aplicativos de desenho e pintura e assim por diante. Os contextos de dispositivos privados não fazem parte do cache do sistema e, portanto, não precisam ser liberados após o uso. O sistema remove automaticamente um contexto de dispositivo privado após a última janela dessa classe ter sido destruída.

Um aplicativo cria um contexto de dispositivo privado especificando primeiro o estilo de classe de janela CS_OWNDC quando inicializa o estilo membro da estrutura deWNDCLASSe chama a funçãoRegisterClass. (Para obter mais informações sobre classes de janela, consulte classes de janela.)

Depois de criar uma janela com o estilo CS_OWNDC, um aplicativo pode chamar o GetDC, GetDCExou função BeginPaint uma vez para obter um identificador que identifique um contexto de dispositivo privado. O aplicativo pode continuar usando esse identificador (e o DC associado) até excluir a janela criada com essa classe. Quaisquer alterações em objetos gráficos e seus atributos, ou modos gráficos são retidos pelo sistema até que a janela seja excluída.

Contextos de dispositivos de janela

Um de contexto de dispositivo de janela de permite que um aplicativo desenhe em qualquer lugar de uma janela, incluindo a área não cliente. Os contextos de dispositivo de janela são normalmente usados por aplicativos que processam as mensagens de WM_NCPAINT e WM_NCACTIVATE para janelas com áreas não clientes personalizadas. O uso de um contexto de dispositivo de janela não é recomendado para qualquer outra finalidade. Para mais informações; consulte GetWindowDC.

Contextos de dispositivo pai

Um de contexto de dispositivo pai permite que um aplicativo minimize o tempo necessário para configurar a região de recorte para uma janela. Um aplicativo normalmente usa contextos de dispositivo pai para acelerar o desenho para janelas de controle sem exigir um contexto de dispositivo particular ou de classe. Por exemplo, o sistema usa contextos de dispositivo pai para botões de pressão e controles de edição. Os contextos de dispositivo pai destinam-se a ser utilizados apenas com janelas filhas, nunca com janelas pop-up ou de nível superior. Para mais informações; consulte Contextos do dispositivo de exibição pai.