J'utilise le contrôle de liste MFC dans la vue de rapport avec des lignes de quadrillage pour afficher les données de façon vaguement chiffrée.Le défilement du contrôle de liste MFC affiche des lignes de quadrillage supplémentaires
Parfois, lorsque l'utilisateur fait défiler verticalement le contrôle, des lignes de grille supplémentaires sont dessinées, ce qui semble terrible.
Cela ne se produit pas lorsque le curseur ou la roulette de la souris est utilisée pour faire défiler, uniquement lorsque la petite touche fléchée vers le bas située en bas de la commande de défilement est utilisée.
Il semble que cela se produise lorsque la taille de la fenêtre de contrôle de liste n'est pas un nombre pair exact de lignes, de sorte qu'une ligne partielle est visible en bas.
Si j'ajuste la taille du contrôle de liste afin qu'il n'y ait aucune ligne partielle visible, le problème est résolu. Cependant, il apparaîtra lorsque le programme est exécuté sur un autre ordinateur, vraisemblablement parce que le nombre de pixels occupés par une ligne change. Je suppose qu'il s'agit d'une interaction entre la résolution de l'écran, la taille de la police et les "unités de dialogue".
Je suppose que je dois forcer par programme la taille du contrôle quand il est créé. Mais quelle taille?
J'ai essayé d'utiliser la méthode ApproximateViewRect() mais je n'arrive pas à l'obtenir. Peut-être que cette méthode ne connaît pas la vue de rapport?
L'autre méthode, je suppose, serait de créer ma propre spécialisation de CListCtrl et de surcharger n'importe quelle méthode faisant défiler. Cela semble être beaucoup de travail.
Cette capture d'écran montre un problème étroitement lié, où les lignes de la grille disparaissent
alt text http://ravenspoint.com/list_scroll_missing_grids.jpg
et voici une avec les lignes de grille supplémentaires
alt text http://ravenspoint.com/list_scroll_extra_grids.jpg
La seule différence entre ces deux et entre eux et celui qui défile parfaitement est quelques pixels différents dans la taille verticale du contrôle.
Cette réponse ajoute simplement la carte de message périphérique à ma réponse déjà suffisante. –
Ajryan, je n'ai pas trouvé votre réponse suffisante. Quand je l'ai implémenté, il a échoué. Il a fallu environ une heure pour trouver le code nécessaire que vous aviez omis. J'ai pensé sauver les autres ce chagrin. – ravenspoint
Complètement ridicule. C'est comme demander comment ajouter deux nombres et dire que la réponse n'était pas suffisante parce qu'elle n'a pas indiqué comment imprimer le résultat. –