IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

MFC Discussion :

[MFC] Obtenir un pointeur CDC* en SDI avec un splitter


Sujet :

MFC

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2005
    Messages
    42
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 42
    Par défaut [MFC] Obtenir un pointeur CDC* en SDI avec un splitter
    Bonjour

    J'ai ajouté un splitter dans mon appli SDI, avec un CTreeView à gauche et un CView à droite. (j'ai suivi la faq avec cet exemple)

    Mon problème vient du fait qu'à partir de la méthode OnMouseMove(...), je n'arrive pas à obtenir le CDC pour tracer dans ma CView.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    void CUMLDesignerView::OnMouseMove(UINT nFlags, CPoint point) 
    {
    	// TODO: Add your message handler code here and/or call default
    	CClientDC aDC(this);
    	aDC.SetROP2(R2_NOTXORPEN);
    	CUMLDesignerDoc* pDoc = GetDocument();
    	ASSERT_VALID(pDoc);
     
    	if(nFlags & MK_LBUTTON && m_ObjManip != NULL)
    	{
    		m_ObjManip->Draw(&aDC,pDoc->m_DiagrammeClasse.m_ClasseOption);
    		m_ObjManip->Deplace(point-ptSelection);
    		ptSelection = point;
    		m_ObjManip->Draw(&aDC,pDoc->m_DiagrammeClasse.m_ClasseOption);
    	}
    	CView::OnMouseMove(nFlags, point);
    }
    Ici rien n'est tracé. (la méthode Draw de l'objet m_ObjManip fonctionne hein ^^)

    J'ai essayé également avec la methode CWnd::GetDC() mais ça ne marche pas non plus

    Donc si vous avez une suggestion ...

    Merci

  2. #2
    Membre émérite
    Avatar de Gabrielly
    Inscrit en
    Juin 2004
    Messages
    722
    Détails du profil
    Informations forums :
    Inscription : Juin 2004
    Messages : 722
    Par défaut
    As-tu essayé de mettre des points d'arrêts.
    Inspecte un peu le code de ta fonction Draw() de l'objet m_ObjManip.

    Aussi une chose, lorsqu'on utilise le mode de dessin R2_NOTXORPEN
    et que l'on appelle sucessivement la méthode Draw() rien n'est dessiné.
    Au fait le premier appel dessine effectivement l'objet. Mais au second appel successif et si on ne change aucune option, la méthode Draw() redessine sur son propre dessin et inverse les couleurs des pixels d'où rien est affiché.

    Au fait si ton dessin consite à déplacer des figures sur la CView alors tu dois dessiner 2 fois la figure . La première fois pour coller le dessin et la deuxième fois pour couper le dessin (couper+coller). Ensuite tu fais le déplacement vers une nouvelle position et tu colles ton dessin.

Discussions similaires

  1. Réponses: 3
    Dernier message: 03/09/2007, 20h09
  2. Réponses: 2
    Dernier message: 14/02/2005, 14h26
  3. [Debutant VC++.net] Obtenir un pointeur sur objet
    Par SteelBox dans le forum MFC
    Réponses: 6
    Dernier message: 17/06/2004, 18h36
  4. [MFC] comment recuperer la vue en SDI??
    Par Devether dans le forum MFC
    Réponses: 4
    Dernier message: 06/05/2004, 09h34
  5. [MFC] Problème de pointeur !!
    Par acastor dans le forum MFC
    Réponses: 7
    Dernier message: 19/03/2004, 15h50

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo