Contextos de dispositivo de exibição de classe
Usando um contexto de dispositivo de classe , um aplicativo pode usar um único contexto de dispositivo de exibição para cada janela pertencente a uma classe especificada. Os contextos de dispositivo de classe são frequentemente usados com janelas de controle que são desenhadas usando os mesmos valores de atributo. Como os contextos de dispositivo privado, os contextos de dispositivo de classe minimizam o tempo necessário para preparar um contexto de dispositivo para desenho.
O sistema fornece um contexto de dispositivo de classe para uma janela se ela pertencer a uma classe de janela com o estilo CS_CLASSDC. O sistema cria o contexto do dispositivo ao criar a primeira janela pertencente à classe e, em seguida, usa o mesmo contexto de dispositivo para todas as janelas criadas subsequentemente na classe. Inicialmente, o contexto do dispositivo de classe tem os mesmos valores padrão para atributos que um contexto de dispositivo comum, mas o aplicativo pode modificá-los a qualquer momento. O sistema preserva todas as alterações, exceto a região de recorte e a origem do dispositivo, até que a última janela da classe tenha sido destruída. Uma alteração feita para uma janela se aplica a todas as janelas dessa classe.
Um aplicativo pode recuperar o identificador para o contexto do dispositivo de classe usando a função GetDC a qualquer momento após a primeira janela ter sido criada. O aplicativo pode manter e usar o identificador sem liberá-lo porque o contexto do dispositivo de classe não faz parte do cache de contexto do dispositivo de exibição. Se o aplicativo criar outra janela na mesma classe de janela, o aplicativo deverá recuperar o contexto do dispositivo de classe novamente. Recuperar o contexto do dispositivo define a origem do dispositivo e a região de recorte corretas para a nova janela. Depois que o aplicativo recupera o contexto do dispositivo de classe para uma nova janela na classe, o contexto do dispositivo não pode mais ser usado para desenhar na janela original sem recuperá-lo novamente para essa janela. Em geral, cada vez que ele deve desenhar em uma janela, um aplicativo deve recuperar explicitamente o contexto do dispositivo de classe para a janela.
Os aplicativos que usam contextos de dispositivo de classe devem sempre chamar BeginPaint ao processar uma mensagem WM_PAINT. A função define a origem correta do dispositivo e a região de recorte para a janela e incorpora a região de atualização. O aplicativo também deve chamar EndPaint para restaurar o cursor se BeginPaint ocultou. EndPaint não tem outro efeito em um contexto de dispositivo de classe.
O sistema passa o contexto do dispositivo de classe ao enviar a mensagem WM_ERASEBKGND para o aplicativo, permitindo que os valores de atributo atuais afetem qualquer desenho realizado pelo aplicativo ou pelo sistema ao processar essa mensagem. Como poderia fazer com uma janela com um contexto de dispositivo privado, um aplicativo pode usar GetDCEx para forçar o sistema a retornar um contexto de dispositivo comum para a janela que tem um contexto de dispositivo de classe.
O uso de contextos de dispositivo de classe não é recomendado.