Bonjour,
J'ai un problème assez désagréable au niveau du rafraîchissement de ma boîte de dialogue lorsque j'effectue un redimensionnement.
Je m'explique...
-1- J'ai une boîte de dialogue permettant de lire des fichiers vidéo.
-2- Des boutons de type CBitmapButton sont placés en dessous de ma zone d'affichage de la vidéo.
-3- Un rectangle CRect m_cadreB est définit au niveau de mes boutons dans la fonction OnPaint() afin de définir une zone grahique dans laquelle seront intégrées, soit une image, soit une couleur de fond différentes du reste de l'application.
Code:
m_cadreB.SetRect(0,rect.bottom-40,rect.right,rect.bottom);
CBrush fond_cadreB(RGB(237,237,237));
dc.FillRect( &m_cadreB, &fond_cadreB);
-4- Afin de respecter les bonnes proportions d'affichage de mon rectangle et de mes boutons lors d'un redimensionnement de ma Dlg, je force l'appel à OnPaint() grâce à la fonction InvalidateRect(m_cadreB, TRUE); à la fin de OnSize().
PROBLEME
La fonction InvalideRect() est bien pratique voir même indispensable, sauf qu'elle provoque un scintillement très désagréable au niveau de la zone du rectangle et plus particulièrement au niveau de mes boutons, à chaque fois que je redimensionne ma Dlg.
J'imagine que ce problème n'est pas nouveau pour la pluspart d'entre vous, mais moi je galère.
Je comprends sa cause...à chaque fois que je redimensionne ma Dlg, Windows se tape tous les calculs de position pour tous mes éléments définis dans OnPaint();
Est-ce qu'il y aurait quelqu'un de balèze pour m'aider ?