ACCÉLÉRATION DE LA VITESSE D'AFFICHAGE EN "GELANT" LE RAFRAÎCHISSEMENT D'UN CONT

Messages postés
94
Date d'inscription
lundi 23 septembre 2002
Statut
Membre
Dernière intervention
22 avril 2003
- - Dernière réponse : NISANDSYSTEMS
Messages postés
146
Date d'inscription
vendredi 1 novembre 2002
Statut
Membre
Dernière intervention
13 décembre 2014
- 13 déc. 2014 à 15:15
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/5427-acceleration-de-la-vitesse-d-affichage-en-gelant-le-rafraichissement-d-un-controle

Afficher la suite 
cs_MyC
Messages postés
94
Date d'inscription
lundi 23 septembre 2002
Statut
Membre
Dernière intervention
22 avril 2003
-
Je ne sais pas si tu as vu ma question dans le forum ou si tu lis dans mes pensées, mais c'est exactement ce qu'il me fallait. Un grand merci à toi (10/10, même si cette source n'est pas de toi, car c'est une très bonne contribution) !
cs_MyC
Messages postés
94
Date d'inscription
lundi 23 septembre 2002
Statut
Membre
Dernière intervention
22 avril 2003
-
Peux-tu me dire à quoi sert cette ligne : "If (i Mod 10) = 0 Then InvalidateRect ListView1.hWnd, 0&, 0&", car comme j'ai mis cette ligne en commentaire comme il est suggéré dans le code, et au lieu de 15751 ms, en vue grandes icônes, avec 1000 items, et avec cette ligne, cela se fait en 99 ms avec les mêmes propriétés mais avec la ligne en commentaire et sans le moindre petit clignotement. Alors j'aimerai savoir, si est est obligatoire dans certains cas et sinon à quoi sert-elle ? Merci d'avance pour ta réponse, et encore bravo pour cette source très utile !
cs_PROGRAMMIX
Messages postés
1134
Date d'inscription
mercredi 2 octobre 2002
Statut
Membre
Dernière intervention
24 juillet 2011
-
Comme tu as pû le voir, cette API est également utilisée après la boucle et sert à rafraîchir la liste.

La ligne de code peut être traduit de la manière suivante :
If (i Mod 10) = 0 signifie que toutes les 10 boucles...
Then InvalidateRect... on redessine la ListView1
Ainsi et suivant les PC, le clignotement peut encore apparaître mais à une moindre fréquence...

Effectivement, en supprimant cette ligne de code, on accélère encore le temps de réalisation de la boucle puisque qu'on ne la redessine plus (ce qui se faisait 1000/10=100 fois)
cs_FPatrick
Messages postés
122
Date d'inscription
mercredi 27 novembre 2002
Statut
Membre
Dernière intervention
8 août 2014
-
Bonjour tout d'abord.
Si tu mets la liste ou les controles dans un picturebox et que tu rends invisible ce picturebox lors d'un chargement , la vitesse de chargement et d'affichage est considérablement augmenté (remarqué plusieurs fois dans mes applications) . Par contre on charge un controle donc de la mémoire , a voir ....
Merci d'avance pour tes commentaires....
peug
Messages postés
234
Date d'inscription
mercredi 25 octobre 2000
Statut
Membre
Dernière intervention
5 octobre 2012
-
La ligne "ValidateRect ListView1.hWnd, 0&" doit se trouver en dehors de la boucle For ! non ?