Contextos comuns do dispositivo de exibição
Um contexto de dispositivo comum é usado para desenhar na área do cliente da janela. O sistema fornece um contexto de dispositivo comum por padrão para qualquer janela cuja classe de janela não especifique explicitamente um estilo de contexto de dispositivo de exibição. Contextos de dispositivo comuns normalmente são usados com janelas que podem ser desenhadas sem alterações extensivas nos atributos de contexto do dispositivo. Contextos comuns de dispositivo são convenientes porque não exigem memória adicional ou recursos do sistema, mas podem ser inconvenientes se o aplicativo precisar configurar muitos atributos antes de usá-los.
O sistema recupera todos os contextos comuns do dispositivo do cache de contexto do dispositivo de exibição. Um aplicativo pode recuperar um contexto de dispositivo comum imediatamente após a criação da janela. Como o contexto comum do dispositivo é do cache, o aplicativo sempre deve liberar o contexto do dispositivo assim que possível após o desenho. Depois que o contexto comum do dispositivo é liberado, ele não é mais válido e o aplicativo não deve tentar desenhar com ele. Para desenhar novamente, o aplicativo deve recuperar um novo contexto de dispositivo comum e continuar a recuperar e liberar um contexto de dispositivo comum sempre que ele desenha na janela. Se o aplicativo recuperar o identificador de contexto do dispositivo usando a função GetDC , ele deverá usar a função ReleaseDC para liberar o identificador. Da mesma forma, para cada função BeginPaint , o aplicativo deve usar uma função EndPaint correspondente.
Quando o aplicativo recupera o contexto do dispositivo, o sistema ajusta a origem para que ele se alinhe ao canto superior esquerdo da área do cliente. Ele também define a região de recorte para que a saída para o contexto do dispositivo seja recortada na área do cliente. Qualquer saída que, de outra forma, apareceria fora da área do cliente, será recortada. Se o aplicativo recuperar o contexto de dispositivo comum usando BeginPaint, o sistema também incluirá a região de atualização na região de recorte para restringir ainda mais a saída.
Quando um aplicativo libera um contexto de dispositivo comum, o sistema restaura os valores padrão para os atributos do contexto do dispositivo. Um aplicativo que modifica valores de atributo deve fazer isso sempre que recupera um contexto de dispositivo comum. A liberação do contexto do dispositivo libera todos os objetos de desenho que o aplicativo pode ter selecionado nele, portanto, o aplicativo não precisa liberar esses objetos antes de liberar o contexto do dispositivo. Em todos os casos, um aplicativo nunca deve assumir que o contexto comum do dispositivo retém seleções não padrão após ser liberado.