Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Presque tout le dessin dans votre application se produit dans la fonction membre d' OnDraw de la vue, que vous devez substituer dans votre classe d'affichage.(L'exception est dessin de la souris, abordée dans Interpréter l'entrée d'utilisateur via une vue.) Votre substitution d' OnDraw :
Obtient des données en appelant les fonctions membres de document que vous fournissez.
Affiche les données par les fonctions membres depuis d'un objet contexte de périphérique que l'infrastructure passe à OnDraw.
Lorsque les données d'un document d'une certaine façon, la vue doivent être redessinées pour refléter les modifications.En général, cela se produit lorsque l'utilisateur effectue une modification via une vue dans le document.Dans ce cas, la vue appelle la fonction membre d' UpdateAllViews de le document pour signaler toutes les vues dans le même document de se mettre à jour.UpdateAllViews appelle la fonction membre d' OnUpdate de chaque affichage.L'implémentation par défaut d' OnUpdate invalide intégralité de la zone cliente de la vue.Vous pouvez le substituer pour invalider uniquement les régions de la zone cliente qui mappent aux parties modifiées de le document.
La fonction membre d' UpdateAllViews de la classe CDocument et la fonction membre d' OnUpdate de la classe CView vous permettent de passer décrire des informations quelles parties du document a été modifiées.Ce mécanisme « indicateurs » vous permet de limiter la zone que la vue doit redessinage.OnUpdate prend deux arguments « indicateurs ».Le premier, lHint, de type LPARAM, vous permet de passer les données que vous souhaitez, alors que la seconde, pHint, de type CObject*, vous permet de passer un pointeur vers tout objet dérivé d' CObject.
Lorsqu'une vue devient non valide, windows envoie un message d' WM_PAINT .La fonction gestionnaire d' OnPaint de la vue répond au message en créant un objet contexte de périphérique de classe CPaintDC et appelle la fonction membre d' OnDraw de celle-ci.Vous ne devez normalement pas écrire une fonction gestionnaire de substitution d' OnPaint .
contexte de périphérique est une structure de données windows qui contient des informations sur les attributs de dessin d'un périphérique tel qu'un écran ou une imprimante.Tous les appels de dessin sont effectués par l'intermédiaire d'un objet contexte de périphérique.Pour dessiner sur l'écran, OnDraw est passé un objet d' CPaintDC .Pour dessiner sur une imprimante, une installation d'objet CDC pour l'imprimante actuelle.
Votre code pour dessiner dans la vue d'abord extrait un pointeur vers le document, puis effectue des appels de dessin à l'aide de le contexte de périphérique.l'exemple simple suivant d' OnDraw montre le processus :
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());
}
Dans cet exemple, attribuez la fonction d' GetData en tant que membre de votre classe dérivée de document.
L'exemple imprime la logique de chaîne il obtient à partir de le document, centrée dans la vue.Si l'appel d' OnDraw est pour le dessin d'écran, l'objet d' CDC passé dans pDC est CPaintDC dont le constructeur a déjà appelée BeginPaint.Les appels à dessiner des fonctions sont effectués par l'intermédiaire de le pointeur de périphérique-contexte.Pour plus d'informations sur les contextes de périphérique et des appels de dessin, consultez la classe CDC dans MFC Reference et L'utilisation d'objets window.
Pour obtenir plus d'exemples d'écrire OnDraw, consultez exemples MFC.