Desenho em um modo de exibição
Quase todos os desenho em seu aplicativo ocorre no modo de exibição OnDraw função de membro, você deve substituir na sua classe de modo de exibição.(A exceção é o mouse de desenho, discutido no Interpretando usuário entrada por meio de um modo de exibição.) O OnDraw substituir:
Obtém dados chamando funções de membro que você fornecer o documento.
Exibe os dados chamando funções de membro de um objeto de contexto de dispositivo do framework passa para OnDraw.
Quando dados do documento é alterado de alguma forma, o modo de exibição deve ser redesenhado para refletir as alterações.Normalmente, isso acontece quando o usuário faz uma alteração através de uma exibição do documento.Nesse caso, o modo de exibição chama o documento UpdateAllViews função de membro para notificar todos os modos no mesmo documento para atualizar-se.UpdateAllViewschama cada modo de exibição OnUpdate função de membro.A implementação padrão de OnUpdate invalida toda área do cliente do modo de exibição.Você pode substituir para invalidar apenas as regiões da área do cliente que mapeiam para as partes modificadas do documento.
O UpdateAllViews função de membro da classe CDocument e OnUpdate função de membro da classe CView permitem passar informações descrevendo quais partes do documento foram modificadas.Esse mecanismo de "dica" permite que você limite a área de exibição deve redesenhar.OnUpdateleva dois argumentos "dica".Primeiro, lHint, do tipo LPARAM, permite passar quaisquer dados que, enquanto o segundo, pHint, do tipo CObject*, permite que você passar um ponteiro para qualquer objeto derivado de CObject.
Quando um modo de exibição se torna inválido, Windows envia um WM_PAINT mensagem.O modo de exibição OnPaint função de manipulador responde à mensagem, criando um objeto de contexto de dispositivo de classe CPaintDC e chama seu modo de exibição OnDraw função de membro.Normalmente não possuem escrever uma substituição OnPaint função de manipulador.
A o contexto de dispositivo é uma estrutura de dados do Windows que contém informações sobre atributos de desenho de um dispositivo, como um monitor ou uma impressora.Todas as chamadas de desenho são feitas através de um objeto de contexto de dispositivo.Para desenhar na tela, OnDraw é passado um CPaintDC objeto.Para desenhar em uma impressora, é passado um CDC objeto configurado para a impressora atual.
Seu código para o modo de desenho primeiro recupera um ponteiro para o documento e faz chamadas desenho através do contexto de dispositivo.Seguir simples OnDraw exemplo ilustra o processo:
void CMyView::OnDraw(CDC* pDC)
{
CMyDoc* pDoc = GetDocument();
ASSERT_VALID(pDoc);
if (!pDoc)
return;
CString s = pDoc->GetData(); // Returns a CString
CRect rect;
GetClientRect(&rect);
pDC->SetTextAlign(TA_BASELINE | TA_CENTER);
pDC->TextOut(rect.right / 2, rect.bottom / 2, s, s.GetLength());
}
Neste exemplo, você deve definir o GetData funcionar como um membro de sua classe derivada do documento.
O exemplo imprime qualquer cadeia de caracteres que ele obtém do documento centralizado no modo de exibição.Se o OnDraw é chamada de desenho da tela, o CDC objeto passado no pDC é um CPaintDC cujo construtor já chamado BeginPaint.Chamadas a funções de desenho são feitas através de ponteiro de contexto de dispositivo.Para obter informações sobre chamadas de desenho e contextos de dispositivo, consulte a classe CDC na Referência MFC e trabalhar com objetos de janela.
Para obter mais exemplos de como escrever OnDraw, consulte o Amostras de MFC.