Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1278 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  MFC Problème d'affichage (OnPaint() et ON_WM_PAINT())

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

MFC Problème d'affichage (OnPaint() et ON_WM_PAINT())

n°1019170
LordHarryP​otter
Posté le 20-03-2005 à 18:50:11  profilanswer
 

Bonjour,
 
J'ai fait une petie applicatino qui dessine des graphiques à la Matlab.
Bref, tous s'affiche bien. Le problème (très connu car tout le monde l'as eu au début) c'est que dès que je passe une autre fenetre dessus, que je maximise .... mon graphe disparait.
 
J'ai été vor sur googole, et j'ai vu qu'il fallait choper le message ON_WM_PAINT() et redéfinir la fonction OnPaint().
 
Mais Si je fais celà (donc dans la fonction OnPaint je lui dis de redessiner mon graphe, ben cette fonction est appelertout le temps (j'ai mis un breakpoint pour voir et j'arrete pas defaire F5 (pour que le programme continue de tourner), mais je retourneimmédiatement sur ce breakpoint, bref maintenant le graphe s'affiche quoi qu'il se passe, mais le problème c'est que el grapheest redessiner enpermanence, meme quand je ne fait rien. Résultat : ben j'ai une sorrte de clignotement etc'est encorepire quece que j'avais. Avant j'appuyait sur un bouton (que j'i codé) et hop j'avais le graphique.
 
Donc ma question est simple comment lui dir de redessiner que lorsque c'est utile ???
 
P.S. Je suis débutant en MFC mais je pense quecette questio, tout le monde y a été confronté

mood
Publicité
Posté le 20-03-2005 à 18:50:11  profilanswer
 

n°1019218
SquiZZ
Posté le 20-03-2005 à 19:30:53  profilanswer
 

Pour le breakpoint dans OnPaint c'est normal que tu n'arrêtes pas de passer dans le breakpoint :
l'appli se lance => OnPaint => breakpoint => passage de VS en premier plan
F5 => l'appli passe en premier plan => OnPaint => breakpoint => passage de VS en premier plan
F5 => ...
 
sans breakpoint tu ne devrais pas avoir ce problème.
 
Pour le clignotement : http://www.codeproject.com/gdi/flickerfree.asp

n°1019443
LordHarryP​otter
Posté le 20-03-2005 à 23:15:20  profilanswer
 

Okay, merci pour le truc du F5 et breakpoint :D c'est l'histoire du chat qui se mord la queue.
 
Par contre j'ai absolument rien compris au CMemDC (enfin ej pens avoir rien compis car rien ne s'affiche).
 
En revanche je me suis inspiré de l'exemple donné par ton lien :
 
En fait tout est dans la fonction OnEraseBkgnd, du coup je ne recode pas la fonction OnDraw. Voici ma fonction :
 
BOOL My_Main_Window::OnEraseBkgnd(CDC* pDC)  
{
 Dessine(affiche_graphique) ;
 return FALSE;
}
 
En sachant que ma fonction Dessine prend un booléan qui s'il est faut rend ma fenetre blanche et si vrai, ben dessine ce que je veux.
 
Cette technique, si je maximise la fenetre, si je passe un autre fenetre dessus ...
 
Je suis content :D


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  MFC Problème d'affichage (OnPaint() et ON_WM_PAINT())

 

Sujets relatifs
problème de driver mysqlgros problème de driver jdbc
Affichage d'1 var sur 1 ligne[Debutant] Problème pour les évènements wxWidget
[java] affichage dans la console[MySQL] Problème avec une requète (jointure ...)
Menu dynamique (problème avec visibility)[ASP.NET] Probleme d'acces BD
Problème d'interaction entre une page et une popupphp/mysql affichage de données à partir d'une base d edonnées
Plus de sujets relatifs à : MFC Problème d'affichage (OnPaint() et ON_WM_PAINT())


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR