Le list-view control a le message LVM_GETTOPINDEX
qui permet d'obtenir l'index de l'élément visible le plus haut.Contrôle de liste LVM_SETTOPINDEX requis
Maintenant, j'ai besoin de définir l'élément le plus visible, mais étonnamment, il n'y a pas de message LVM_SETTOPINDEX
qui serait naturel.
Existe-t-il un moyen facile de régler l'élément le plus haut?
Mon contrôle de liste est toujours en mode rapport.
Le message 'LVM_ENSUREVISIBLE' est un début. Définissez 'lParam' sur' FALSE' pour vous assurer que l'élément est * entièrement * visible. Mais cela fait juste en sorte qu'il soit visible, il ne le fait pas nécessairement en haut de la liste. Ce sera plutôt difficile à faire, bien sûr, en fonction de la taille du contrôle de liste et du nombre d'éléments qu'il contient. –
@CodyGray lorsque vous écrivez 'LVM_ENSUREVISIBLE' est un début, mais cela garantit simplement qu'il effectue un défilement minimal pour que l'élément sélectionné soit visible, il sera soit à la première ligne de la dernière ligne selon si l'élément sélectionné était au dessus ou en dessous de la vue. 'LVM_SETTOPINDEX' est de nouveau quelque chose que Microsoft a oublié. –
Considérez si vous avez un très grand contrôle de vue liste, et seulement quelques éléments. Les éléments ne remplissent pas la boîte, et il n'y a aucune raison pour qu'une barre de défilement apparaisse. Maintenant, comment allez-vous les faire défiler pour que l'objet n ° 5 soit en haut? Tu ne peux pas. Vous ne pouvez pas le faire de manière interactive, et vous ne pouvez pas le faire par programmation. Certes, il y a des moments où cela fonctionnerait, mais il y a des moments où ce ne serait pas le cas, donc vous ne pouvez pas avoir un message générique qui le fait. –