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][SDI] Problème de raffraichissement écran avec Invalidate()


Sujet :

MFC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 22
    Par défaut [MFC][SDI] Problème de raffraichissement écran avec Invalidate()
    Bonjour, bonjour!

    Donc voilà gros probleme

    J'ai créé un projet SDI, et j'ai donc des classes par défaut CEmerView (hérite de CView) CEmerDoc CMainFrame et j'ai aussi plusieurs autres classes, dont une, CConsulterDlg qui hérite de CDialog.
    Une fois ma classe CConsuterDlg instanciée etc... Dans une fonction de cet objet j'appel Invalidate() pour raffraichir la fenetre SDI, mon problème,
    c'est que ca ne rafraichit rien du tout,
    HORMIS si on minimise ET maximise la fenetre OU BIEN si je la déplace en dehors de l'écran et que je la ramene (histoire d'évenement quoi...).
    Voilà pour situer un peu le projet.

    j'ai essayé d'accéder au ptr de CEmerView à partir de CConsulterDlg, créer la fonction OnPaint associée à WM_PAINT, j'ai essayé d'utiliser d'autres fonctions pour modifier l'affichage... en vain

    Peut on m'aider ?

    merci !

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    salut,
    la question c'est qu'est ce qui justifie que tu fasses un Invalidate ?

    pour acceder a la vue à partir de la dialogue en SDI voir post it faq:
    http://www.developpez.net/forums/sho...92#post1002092


  3. #3
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 22
    Par défaut
    En fait je veux dessiner 3 courbes, avant d'appeller le invalidate dans ma méthode de CConsulterDlg, j'initialise 3 tableaux statiques de déplacement vitesse et accéleration pour que mon objet associé à ma classe CEmerView puisse y accéder et dessiner mes 3 courbes lorsque j'appel le Invalidate() ( et donc le OnDraw() ). Mais ca n'affiche rien du tout ...

    voici ma méthode ou j'appel le invalidate() :
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    ////////////////////////////////////////
    // Nom : OnVisualiser()
    // Fonction : Permet d'afficher la courbe de l'essai et ses paramètres
    // Par. entrant : -
    // Par. sortant : -
    ////////////////////////////////////////
    void CConsulterBdDDlg::OnVisualiser() 
    {
    	// Recuperation du nom de l'essai dans la liste
    	int index = listeB->GetCurSel() ;
     
    	if (index != LB_ERR)
    	{
    		CString nom;
    		listeB->GetText(index,nom);
     
    		// Init du nom
    		ptrCBD->nomEssai = nom;
     
    		//Obtention et calcul des valeurs des courbes
    		ptrCBD->GetValeurCourbe();
     
    		// Appel de OnDraw
    		Invalidate();
     
    		// Fermeture de la fenetre
    		EndDialog(0);
    	}	
    }

  4. #4
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    re,
    une méthode d'une classe fenêtre s'applique sur la fenêtre associée.(la palisse )
    Donc ton Invalidate s'applique sur ta dialogue et non sur ta vue.
    voir mon post précedent.

  5. #5
    Membre averti
    Profil pro
    Étudiant
    Inscrit en
    Janvier 2006
    Messages
    22
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2006
    Messages : 22
    Par défaut
    okay !!! merci je pige le truc !
    bon j'y avais déjà pensé ya qqs tps et j'ai pensé à créer un ptr sur mon main, à partir de celuici je vais pouvoir faire un invalidate() tout simplement ?
    genre :
    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    ////////////////////////////////////////
    // Nom : OnVisualiser()
    // Fonction : Permet d'afficher la courbe de l'essai et ses paramètres
    // Par. entrant : -
    // Par. sortant : -
    ////////////////////////////////////////
    void CConsulterBdDDlg::OnVisualiser() 
    {
    	// Recuperation du nom de l'essai dans la liste
    	int index = listeB->GetCurSel() ;
     
    	if (index != LB_ERR)
    	{
    		CString nom;
    		listeB->GetText(index,nom);
     
    		// Init du nom
    		ptrCBD->nomEssai = nom;
     
    		//Obtention et calcul des valeurs des courbes
    		ptrCBD->GetValeurCourbe();
     
    		// Appel de OnDraw
    		//Invalidate();
    		ptrMain->Invalidate() ;
     
     
    		// Fermeture de la fenetre
    		EndDialog(0);
    	}	
    }

  6. #6
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    je t'ai donné deux méthodes valides sans ajout de variable, après tu fais ce que tu veux....

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MFC][CMap] Problème avec Lookup
    Par MystEre dans le forum MFC
    Réponses: 6
    Dernier message: 27/12/2005, 11h00
  2. [MFC] Débutant : Problème avec OnPaint()
    Par ZaaN dans le forum MFC
    Réponses: 14
    Dernier message: 05/12/2005, 13h15
  3. [MFC][WINSOCK] Problème avec fonction recv
    Par Le Farfadet dans le forum MFC
    Réponses: 4
    Dernier message: 23/09/2005, 11h00
  4. [MFC] [CRecordset] Problème avec Excel
    Par Yellowmat dans le forum MFC
    Réponses: 4
    Dernier message: 20/07/2005, 15h24
  5. [MFC] SDI - pb avec OnInitialUpdate()
    Par bigboomshakala dans le forum MFC
    Réponses: 6
    Dernier message: 22/11/2004, 14h30

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