Bonjour a tous,
Voila je travail sous microsoft visual studio .Net 2003, je crais un projet de type MFC application et ma classe de base est CFormView. J'ultilise des objets de la ToolBox comme "List Control" par exemple. J'ai dut changer le font de ma fenetre. Pour cela j'ai utilisé le WM_ERASEBKGND (comme conseille sur des sites) et je fais :
Ca marche tres bien, le probleme étant le rafraichissement de mes objets generés par ma tool box. Des que l'on redessinne un objet du paint (appel d'un Invalidate(), redimenssionement de la fenetre, figure géométrique comme un carré dessinné dans le paint... ) le background (noir dans mon cas) est comme redessinné par dessus mes objets de toolbox ce qui donne un mauvais rafraichissement. Dans le cas ou l'on redessinne assez souvent des objets ca devient n'importe quoi, ca clignote beaucoup trop, ce n'est pas présentable.....
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 BOOL CbackgroundView::OnEraseBkgnd(CDC* pDC) { // Fixe une brosse avec la couleur de fond choisie CBrush BkClrBrush(RGB(0, 0, 0)); // Sauvegarde lancienne brosse. CBrush* pOldBrush = pDC->SelectObject(&BkClrBrush); CRect rect; pDC->GetClipBox(&rect); // récupère la zone a effacer. pDC->PatBlt(rect.left, rect.top, rect.Width(),rect.Height(), PATCOPY); pDC->SelectObject(pOldBrush);// restitue lancienne brosse return true; }
1- Est ce que j'utilise la bonne methode pour mon font d'ecran?
2- Est ce que vous comprenez ce que je raconte?
3- Y a-t-il une solution pour mieux gérer le rafraichissement?
4- Peut on changer la couleur du font d'un List Control, le mettre de la meme couleur que le font noir et la police blanche, ainsi le rafraichissenent passera mieux.
Merci
ps : désolé pour les accents, je suis en angleterre sur un clavier qwerty.
Cyril
Partager