Bonjour à tous,

Je suis entrain de faire une genre de list view, avec des colonne et des lignes. De plus, j'ai besion qu'elle puisse faire défiller ces éléments. Cependant, j'ai quelques difficultés à comprendre comment initialiser les scrollbar.

Jusqu'ici, il semble que la manière dont je l'ai initialisée soit correct puisque tout fonctionne bien. Mais je ne comprend pas pourquoi ! Voici le code que j'ai uitliser jusqu'ici :

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
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
 
// Taille de ma zone client (ma liste)
CRect rectZoneVisible;
GetClientRect( &rectZoneVisible );
 
// Est-ce que la liste possède un élément ? 
if ( m_iRowCount > 0 )
{
   // Taille de la colonne 0, (hauteur nécessaire)
   CRect colRect;
   GetClientColumnRect( 0, &colRect );
 
   // Taille de la ligne 0 (hauteur nécessaire)
   CRect rowRect;
   GetClientRowRect( 0, &rowRect );
 
   // Déterminer si la scrollbar vertical sera visible
   if ( (m_iRowCount * rowRect.Height()) > rectZoneVisible.Height() - 
colRect.Height() )
   {
       // Initialiser la scrollbar vertical
       SCROLLINFO si;
       si.cbSize = sizeof(SCROLLINFO);
       si.fMask = SIF_ALL;
       si.nPos = m_ScrollBarHiddenV.GetScrollPos();
       si.nMin = 0;
       si.nMax = m_iRowCount - 1;
       si.nPage = rectZoneVisible.Height() / rowRect.Height();
       si.nTrackPos = 0;
       m_ScrollBarHiddenV.SetScrollInfo( &si, TRUE );
       m_ScrollBarHiddenV.ShowScrollBar(TRUE);
       ...
    }
    else
    {
       m_ScrollBarHiddenV.ShowScrollBar(FALSE);
    }
}
Pourquoi
et pas ?

Deuxièmement, si nPage doit représenter le nombre d'élément visible par page alors pourquoi ne serait-il pas
Code : Sélectionner tout - Visualiser dans une fenêtre à part
 nPage = (rectZoneVisible.Height() - colRect.Height()) / rowRect.Height();
À mon avis, il faut soustraire la hauteur des colonne à la zone visible (liste) pour déterminer combien d'élément seront visible par page ?

Si quelqu'un peut m'expliquer plus clairement.
Merci beaucoup.