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] Problème de rafraîchissement


Sujet :

MFC

  1. #1
    Nouveau membre du Club Avatar de nmarf
    Inscrit en
    Mai 2003
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 92
    Points : 39
    Points
    39
    Par défaut [MFC] Problème de rafraîchissement
    Bonjour,

    J'ai créé un contrôle qui permet d'afficher des images. Sur un clic droit, on peut faire apparaître dans ce contrôle une CListBox.
    Le problème c'est que quand la CListBox apparaît, j'ai des "résidus" d'images qui restent autour et qui disparaîssent lorsqu'on passe une fenêtre dessus ou lorsqu'on minimise puis agrandit la fenêtre.
    J'ai essayé les fonctions UpdateWindow(), Invalidate() et même ShowWindow() mais rien ne fonctionne si je reste dans la classe de mon contrôle.

    Comment forcer le raffraîchissement ?

  2. #2
    Nouveau membre du Club Avatar de nmarf
    Inscrit en
    Mai 2003
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 92
    Points : 39
    Points
    39
    Par défaut
    J'ai réussi à supprimer les "résidus" d'images en rajoutant dans la classe de mon contrôle un Invalidate() de la classe parent :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	CWnd* ParentWnd = this->GetParent();
    	ParentWnd->Invalidate(TRUE);
    Le problème c'est que j'ai maintenant droit à un scintillement de toute ma fenètre.
    Est-ce qu'il existe une meilleure solution ?

  3. #3
    Membre émérite
    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
    Points : 2 747
    Points
    2 747
    Par défaut
    tu peux essayer InvalidateRect qui permet de definir une zone de rafraichissement

  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
    Points : 17 323
    Points
    17 323
    Par défaut
    En fait je ne comprends pas trop le contexte de ton contrôle.
    Tu fais apparaître une listbox par-dessus ?
    Il faudrait que tu précises un peu plus ton contexte.

  5. #5
    Nouveau membre du Club Avatar de nmarf
    Inscrit en
    Mai 2003
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 92
    Points : 39
    Points
    39
    Par défaut
    Citation Envoyé par la drogue c'est mal
    tu peux essayer InvalidateRect qui permet de definir une zone de rafraichissement
    J'ai essayé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    CRect rect;
    this->GetClientRect(rect);
    this->InvalidateRect(rect,TRUE);
    mais ça ne donne rien, même pas de scintillement.

    Citation Envoyé par farscape
    En fait je ne comprends pas trop le contexte de ton contrôle.
    Tu fais apparaître une listbox par-dessus ?
    Il faudrait que tu précises un peu plus ton contexte.
    J'ai bien des captures d'écran qui permettrai de bien voir le problème mais je n'ai pas moyen de les mettre en ligne pour les inclure dans le post (à moins qu'il existe un hébergeur d'image ?).
    Je vais essayer d'être plus clair :
    J'ai un contrôle dérivé d'un CStatic dans lequel j'affiche des images (sorte de preview des images contenues dans un répertoire) OU des images et une CListBox. Dans le second cas, la zone d'affichage des images est redéfinie et la CListBox est visible (ShowWindow(1)). On passe d'un cas à l'autre par un clic droit.
    En effet, c'est un peu comme si la listbox est affichée "dessus", même si tout est redisposé.

    En espérant que ces précisions aideront...

  6. #6
    Nouveau membre du Club Avatar de nmarf
    Inscrit en
    Mai 2003
    Messages
    92
    Détails du profil
    Informations forums :
    Inscription : Mai 2003
    Messages : 92
    Points : 39
    Points
    39
    Par défaut
    J'ai trouvé un moyen d'afficher des captures d'écran de mon problème

    Avant le clic droit :


    Après :


    Ce que j'aimerai avoir :



    Ca devrait être un peu plus clair maintenant.

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/02/2006, 14h27
  2. [MFC] Problème pointeur sur une classe
    Par mick74 dans le forum MFC
    Réponses: 7
    Dernier message: 14/04/2004, 15h17
  3. [MFC] Problème de pointeur !!
    Par acastor dans le forum MFC
    Réponses: 7
    Dernier message: 19/03/2004, 16h50
  4. [MFC] problème d'éxécution
    Par ben_iap dans le forum MFC
    Réponses: 2
    Dernier message: 15/03/2004, 11h31
  5. Problème de rafraîchissement de données...
    Par Alain Dionne dans le forum Bases de données
    Réponses: 3
    Dernier message: 06/03/2004, 22h07

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