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 ser desenhado 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
- Parent
Contextos de dispositivo de classe
Os contextos de dispositivo de classe têm suporte 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 do dispositivo
Contextos comuns de 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 de dispositivo comum 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 depois que um aplicativo os libera. Os contextos de dispositivo privado são usados em aplicativos que executam várias 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 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 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. Todas as alterações em objetos gráficos e seus atributos ou modos gráficos são mantidas 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ão cliente. Os contextos do dispositivo de janela normalmente são usados por aplicativos que processam as mensagens de WM_NCPAINT e WM_NCACTIVATE para janelas com áreas não comuns personalizadas. O uso de um contexto de dispositivo de janela não é recomendado para nenhuma outra finalidade. Para obter mais informações; consulte GetWindowDC.
Contextos de 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 de push e controles de edição. Os contextos de dispositivo pai destinam-se apenas ao uso 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.