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] Globaliser une variable locale


Sujet :

MFC

Vue hybride

Message pr�c�dent Message pr�c�dent   Message suivant Message suivant
  1. #1
    Membre confirm� Avatar de Philippe320
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    179
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 179
    Par d�faut [MFC] Globaliser une variable locale
    Bonjour,

    j'utilise la librairie graphique GDI+
    dans ma classe d�riv�e de CView, ma fonction OnDraw est comme �a :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    void CMaVue::OnDraw(CDC* pDC) {
    	CDocument* pDoc = GetDocument();
     
    // TODO: add draw code here
    Gdiplus::Graphics graphics(pDC->m_hDC);
     
    Pen pen1(Color(255, 0, 0), 20);
    graphics.SetSmoothingMode(SmoothingModeAntiAlias);
    graphics.DrawLine(&pen1, 160, 0, 170, 800);
     
    CView::OnDraw(pDC);
     
    }
    Rien que de tr�s classique.
    Cependant, je voudrais pouvoir dessiner depuis d'autres fonctions, donc rendre la variable graphics globale dans la classe (d�sol� si ce n'est pas le terme exact )

    j'ai essay� un truc du genre

    Gdiplus::Graphics* graphics;
    dans CMaVue.h

    puis graphics=new Gdiplus::Graphics(pDC->m_hDC);
    dans CMaVue.cpp

    mais �a plante.

    Comment faire �a proprement ?
    Merci d'avance de votre aide
    Philippe

  2. #2
    Membre confirm� Avatar de lenouvo
    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    252
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 252
    Par d�faut
    ca fonctionne correctement lorsque tu met cette d�claration
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    Gdiplus::Graphics* graphics;
    en local dans ta fonction OnDraw ?

  3. #3
    Membre Expert
    Avatar de la drogue c'est mal
    Profil pro
    Inscrit en
    Novembre 2002
    Messages
    2 253
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2002
    Messages : 2 253
    Par d�faut
    tu declares un constructeur en plus
    tu ajoutes une variable m_pView en plus
    tu ajoutes une methode GetDC():

    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
     
     
    class Graphics : XXXX
    {
    public:
     
    Graphics(CWnd* pView){m_pView=pView}
     
    CDC* GetDC( )
     {
       if( m_pView ) m_pView->GetDC()
     }
    protected :
    CWnd* m_pView;
    }
    dans ton code, � chaque fois que tu as besoins du DC, tu fais appeles � GetDC() (donc plus besoins de l'initialiser dans le OnPaint)


    tu declares la variable dans le .h de CMaVue :

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
     
    class CMaVue : public XXX
    {
     
    protected:
     
    Gdiplus::Graphics graphics;
    }
    dans le C++

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
     
    CMaVue::CMaVue(...) : graphics(this)
    {...
    }
    comme ca dans ta class CMaVue tu peux utiliser directement la variable graphic de n'importe ou

    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    void CMaVue::OnDraw(CDC* pDC) { 
       CDocument* pDoc = GetDocument(); 
     
    // TODO: add draw code here 
    Pen pen1(Color(255, 0, 0), 20); 
    graphics.SetSmoothingMode(SmoothingModeAntiAlias); 
    graphics.DrawLine(&pen1, 160, 0, 170, 800); 
     
    CView::OnDraw(pDC); 
     
    }

  4. #4
    Membre confirm� Avatar de Philippe320
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    179
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 179
    Par d�faut
    Merci de ta r�ponse.
    Le probl�me est r�solu

    Philippe

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. R�ponses: 8
    Dernier message: 09/01/2007, 13h11
  2. [D�butant] r�cup�ration d'une variable local pour l'envoyer a un popup
    Par minogttao dans le forum G�n�ral JavaScript
    R�ponses: 9
    Dernier message: 25/11/2006, 13h58
  3. [XSLT][XPATH ] Portée d'une variable locale
    Par be_tnt dans le forum XSL/XSLT/XPATH
    R�ponses: 2
    Dernier message: 15/11/2006, 15h39
  4. [MFC] initialiser une variable a l'heure courante
    Par jiraya43 dans le forum MFC
    R�ponses: 4
    Dernier message: 09/05/2006, 16h13
  5. R�ponses: 9
    Dernier message: 20/03/2006, 16h51

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