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 que pertence a uma classe especificada. Os contextos de dispositivo de classe geralmente são usados com janelas de controle desenhadas usando os mesmos valores de atributo. Assim 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 fornecerá um contexto de dispositivo de classe para uma janela se pertencer a uma classe de janela com o estilo CS_CLASSDC. O sistema cria o contexto do dispositivo ao criar a primeira janela que pertence à classe e, em seguida, usa o mesmo contexto de dispositivo para todas as janelas criadas posteriormente 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 na classe tenha sido destruída. Uma alteração feita para uma janela se aplica a todas as janelas nessa 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 criação da primeira janela. 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. A recuperação do 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 sempre devem chamar BeginPaint ao processar uma mensagem de WM_PAINT . A função define a origem do dispositivo e a região de recorte corretas para a janela e incorpora a região de atualização. O aplicativo também deve chamar EndPaint para restaurar o cursor se BeginPaint o escondeu. 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 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.