Exibir contextos do dispositivo

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

Há cinco tipos de DCs para exibições de vídeo:

  • Classe
  • Comum
  • Privado
  • Janela
  • Pai

Contextos do dispositivo de classe

Há suporte para contextos de dispositivo de classe estritamente para compatibilidade com versões de 16 bits de Windows. Ao escrever seu aplicativo, evite usar o contexto do dispositivo de classe; em vez disso, use um contexto de dispositivo privado.

Contextos comuns do dispositivo

Os contextos comuns do dispositivo são DCs de exibição mantidos em um cache especial pelo sistema. Contextos comuns de dispositivo são usados em aplicativos que executam operações de desenho pouco frequentes. Antes que o sistema retorne o identificador DC, ele 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 dispositivo comuns, um aplicativo deve liberá-los depois de concluir o desenho. Quando o aplicativo libera um contexto de dispositivo comum, todas as alterações nos dados padrão são perdidas.

Contextos de dispositivo privado

Os contextos de dispositivo privado são DCs de exibição que, ao contrário dos contextos comuns do dispositivo, retêm quaisquer alterações nos dados padrão mesmo após um aplicativo liberá-los. Os contextos de dispositivo privado são usados em aplicativos que executam inúmeras operações de desenho, como aplicativos CAD (design auxiliado por computador), aplicativos de publicação de área de trabalho, aplicativos de desenho e pintura e assim por diante. Os contextos de dispositivo privado 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 depois que a última janela dessa classe foi destruída.

Um aplicativo cria um contexto de dispositivo privado especificando primeiro o estilo de classe de janela CS_OWNDC quando inicializa o membro de estilo da estrutura WNDCLASS e chama a função RegisterClass . (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 a função GetDC, GetDCEx ou BeginPaint uma vez para obter um identificador que identifica 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 retidas pelo sistema até que a janela seja excluída.

Contextos do dispositivo de janela

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

Contextos do dispositivo pai

Um 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 privado ou de classe. Por exemplo, o sistema usa contextos de dispositivo pai para botão push e controles de edição. Os contextos de dispositivo pai destinam-se a ser usados somente com janelas filho, nunca com janelas pop-up ou de nível superior. Para obter mais informações; consulte contextos do dispositivo de exibição pai.