• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

强制重画窗口某一区域

发布: 2007-6-21 21:57 | 作者: 不详  | 来源: vb中文网  | 查看: 15次 | 进入软件测试论坛讨论

领测软件测试网

   
  这个例子演示了如何强制重画窗口某一区域.有时这是很需要的,例如当你使用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

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网