Contextos de dispositivo
Um contexto de dispositivo é uma estrutura de dados do Windows que contém informações sobre os atributos de desenho de um dispositivo, como uma exibição ou uma impressora. Todas as chamadas de desenho são feitas por meio de um objeto de contexto de dispositivo, que encapsula as APIs do Windows para desenhar linhas, formas e texto. Os contextos do dispositivo permitem o desenho independente do dispositivo no Windows. Os contextos do dispositivo podem ser usados para desenhar para a tela, para a impressora ou para um meta-arquivo.
Objetos CPaintDC encapsulam o idioma comum do Windows, chamando a função BeginPaint
e, em seguida, desenhando no contexto do dispositivo e chamando a função EndPaint
. O construtor CPaintDC
chama BeginPaint
para você e o destruidor chama EndPaint
. O processo simplificado é criar o objeto CDC, desenhar e então destruir o objeto CDC
. Na estrutura, grande parte desse processo é automatizada. Em particular, sua função OnDraw
é passada por um CPaintDC
já preparado (via OnPrepareDC
) e você simplesmente desenha nela. Ele é destruído pela estrutura e o contexto do dispositivo subjacente é liberado para o Windows após retornar da chamada para sua função OnDraw
.
Objetos CClientDC encapsulam o trabalho com um contexto de dispositivo que representa apenas a área de cliente de uma janela. O construtor CClientDC
chama a função GetDC
e o destruidor chama a função ReleaseDC
. Objetos CWindowDC encapsulam um contexto de dispositivo que representa toda a janela, incluindo seu quadro.
Objetos CMetaFileDC encapsulam o desenho em um meta-arquivo do Windows. Ao contrário do CPaintDC
passado para OnDraw
, você deve, nesse caso, chamar OnPrepareDC por conta própria.
Desenho do mouse
A maioria dos desenhos em um programa de estrutura, e, portanto, a maioria dos trabalhos de contexto de dispositivo, é feita na função de membro OnDraw
da exibição. No entanto, você ainda pode usar objetos de contexto de dispositivo para outras finalidades. Por exemplo, para fornecer comentários de acompanhamento para a movimentação do mouse em uma exibição, você precisa desenhar diretamente no modo de exibição sem esperar OnDraw
ser chamado.
Nesse caso, você pode usar um objeto de contexto de dispositivo CClientDC para desenhar diretamente no modo de exibição.