程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> Visual Basic語言 >> VB6 >> vb實現強制重畫窗口某一區域

vb實現強制重畫窗口某一區域

編輯:VB6

這個例子演示了如何強制重畫窗口某一區域.有時這是很需要的,例如當你使用LockWindowUpdate API 函數來加快某一控件的數據加載速度時.

新建一個工程,添加一個模塊,代碼如下:

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 Sub Command1_Click()
  RepaintWindow List1
End Sub
Private Sub Form_Load()
  Dim i As Long
  For i = 1 To 200
   List1.AddItem "TestItem " & i
  Next i
End Sub

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved