- 'API pour mesurer le temps écoulé
- Private Declare Function GetTickCount Lib "kernel32" () As Long
-
- 'API permettant de "geler" la mise à jour d'un objet
- Private Declare Sub InvalidateRect Lib "user32" (ByVal hWnd As Long, ByVal t As Long, ByVal bErase As Long)
- Private Declare Sub ValidateRect Lib "user32" (ByVal hWnd As Long, ByVal t As Long)
- ' 1000 éléments sont ajoutés à la ListView via une boucle rendant régulièrement la main à Windows
- ' mais ici, on utilise 2 API permettant de "geler" et "dégeler" le rafraîchissement de la liste.
- ' La liste "clignote" moins voire pas du tout si on annule la ligne (=>)
-
- Private Sub Command2_Click()
-
- Dim nStart As Long
- Dim i As Integer
-
- nStart = GetTickCount()
- ListView1.View = 3
-
- ListView1.ListItems.Clear
-
- For i = 1 To 1000
- ListView1.ListItems.Add , , "Chaîne " & CStr(i)
-
- '-- En validant la région, il n'y aura pas de génération d'un message WM_PAINT
- ValidateRect ListView1.hWnd, 0&
-
- '-- "Rafraîchit" la liste
- '(=>) Essayez également en désactivant cette ligne...
- If (i Mod 10) = 0 Then InvalidateRect ListView1.hWnd, 0&, 0&
-
- '-- Autorise le multi-tâche
- DoEvents
- Next i
-
- InvalidateRect ListView1.hWnd, 0&, 0&
- MsgBox Str(GetTickCount() - nStart) & " ms", vbOKOnly, "Avec optimisation :"
-
- End Sub
'API pour mesurer le temps écoulé
Private Declare Function GetTickCount Lib "kernel32" () As Long
'API permettant de "geler" la mise à jour d'un objet
Private Declare Sub InvalidateRect Lib "user32" (ByVal hWnd As Long, ByVal t As Long, ByVal bErase As Long)
Private Declare Sub ValidateRect Lib "user32" (ByVal hWnd As Long, ByVal t As Long)
' 1000 éléments sont ajoutés à la ListView via une boucle rendant régulièrement la main à Windows
' mais ici, on utilise 2 API permettant de "geler" et "dégeler" le rafraîchissement de la liste.
' La liste "clignote" moins voire pas du tout si on annule la ligne (=>)
Private Sub Command2_Click()
Dim nStart As Long
Dim i As Integer
nStart = GetTickCount()
ListView1.View = 3
ListView1.ListItems.Clear
For i = 1 To 1000
ListView1.ListItems.Add , , "Chaîne " & CStr(i)
'-- En validant la région, il n'y aura pas de génération d'un message WM_PAINT
ValidateRect ListView1.hWnd, 0&
'-- "Rafraîchit" la liste
'(=>) Essayez également en désactivant cette ligne...
If (i Mod 10) = 0 Then InvalidateRect ListView1.hWnd, 0&, 0&
'-- Autorise le multi-tâche
DoEvents
Next i
InvalidateRect ListView1.hWnd, 0&, 0&
MsgBox Str(GetTickCount() - nStart) & " ms", vbOKOnly, "Avec optimisation :"
End Sub