Private Type RECT Left As Long Top As Long Right As Long Bottom As Long End Type
Private Type POINTAPI X As Long Y As Long End Type
Private Declare Function GetWindowRect Lib "user32" (ByVal hWnd As Long, lpRect As RECT) As Long Private Declare Function GetClientRect Lib "user32" (ByVal hWnd As Long, lpRect As RECT) As Long Private Declare Function InvalidateRect Lib "user32" (ByVal hWnd As Long, lpRect As RECT, ByVal bErase As Long) As Long Private Declare Function ScreenToClient Lib "user32" (ByVal hWnd As Long, lpPoint As POINTAPI) As Long
Public Sub RepaintWindow(ByRef objThis As Object, Optional ByVal bClientAreaOnly As Boolean = True) Dim tR As RECT Dim tP As POINTAPI If (bClientAreaOnly) Then GetClientRect objThis.hWnd, tR Else GetWindowRect objThis.hWnd, tR tP.X = tR.Left: tP.Y = tR.Top ScreenToClient objThis.hWnd, tP tR.Left = tP.X: tR.Top = tP.Y tP.X = tR.Right: tP.Y = tR.Bottom ScreenToClient objThis.hWnd, tP tR.Right = tP.X: tR.Bottom = tP.Y End If InvalidateRect objThis.hWnd, tR, 1 End Sub
Private Declare Function LockWindowUpdate Lib "user32" (ByVal hwndLock As Long) As Long Private Declare Function timeGetTime Lib "winmm.dll" () As Long
Private Sub Command1_Click() Dim i As Long Dim lTIme As Long
lTIme = timeGetTime()
If (Check1.Value = Checked) Then LockWindowUpdate List1.hWnd End If
List1.Clear For i = 1 To 10000 List1.AddItem "Test " & i Next i
If (Check1.Value = Checked) Then LockWindowUpdate 0 List1.Refresh End If