国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 學院 > 開發設計 > 正文

強制和防止窗口重畫

2019-11-18 17:34:03
字體:
來源:轉載
供稿:網友
這個例子告訴你如何強制窗口的一部分重畫。有時這是必須的,特別是當你試驗自己重畫控件的技術,或者已經使用了LockWindowUpdate
這個API函數以阻止控件重畫時(參見“防止一個窗口重畫”)。

  新建一個項目,添加一個module,然后粘貼下列代碼:

aspOINTAPI)AsLong

PublicSubRepaintWindow(ByRefobjThisAsObject,OptionalByValbClientAreaOnlyAsBoolean=True)
 DimtRAsRECT
 DimtPAsPOINTAPI
 If(bClientAreaOnly)Then
  GetClientRectobjThis.hWnd,tR
 Else
  GetWindowRectobjThis.hWnd,tR
  tP.X=tR.Left:tP.Y=tR.Top
  ScreenToClientobjThis.hWnd,tP
  tR.Left=tP.X:tR.Top=tP.Y
  tP.X=tR.Right:tP.Y=tR.Bottom
  ScreenToClientobjThis.hWnd,tP
  tR.Right=tP.X:tR.Bottom=tP.Y
 EndIf
 InvalidateRectobjThis.hWnd,tR,1 
EndSub

  為了試試重畫,在窗體上添加一個ListBox和一個Command。把ListBox拉得大一些,這樣效果比較明顯。再加入下列代碼:

PrivateSubCommand1_Click()
 RepaintWindowList1
EndSub

PrivateSubForm_Load()
 DimiAsLong
 Fori=1To200
  List1.AddItem"TestItem"&i
 Nexti
EndSub

  當你單擊Command按鈕,ListBox的客戶區將全部重畫。對于ListBox,這種效果并不十分明顯地顯示,但這段代碼放在這里主要目的,是讓你在
遇上有東西不能恰當地重畫它自己時可以有辦法解決。

——————————————————————————————————————————————

防止窗口重畫 WXJ_Lake編譯

  這則代碼演示了如何防止窗口的一部分重畫。當你要往ListBox或ListView這樣的控件里添加許多項時,暫緩重畫可以相當地提高處理速度。
在我的系統上,往一個ListBox中加10000項比原來提速30

  新建一個項目,添加一個ListBox、一個Command和一個CheckBox。把CheckBox的Caption設為"&LockUpdate",Command的Caption設為"&Load"。
然后,把下列代碼粘貼到窗體中:

PrivateDeclareFunctionLockWindowUpdateLib"user32"(ByValhwndLockAsLong)AsLong
PrivateDeclareFunctiontimeGetTimeLib"winmm.dll"()AsLong

PrivateSubCommand1_Click()
 DimiAsLong
 DimlTImeAsLong

 lTIme=timeGetTime()

 If(Check1.Value=Checked)Then
  LockWindowUpdateList1.hWnd
 EndIf

 List1.Clear
 Fori=1To10000
  List1.AddItem"Test"&i
 Nexti

 If(Check1.Value=Checked)Then
  LockWindowUpdate0
  List1.Refresh
 EndIf

 MsgBox"Time:"&timeGetTime-lTIme

EndSub

  當你單擊Command按鈕,代碼將往ListBox中添加10000項。如果"LockUpdate"的復選框被選中,Windows將在往ListBox中添加項時防止它的重畫。操作結束后,會彈出一個對話框報告運行時間。->


發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 无锡市| 桦甸市| 宜良县| 屏东市| 大渡口区| 惠东县| 宁津县| 道孚县| 城步| 晋城| 哈尔滨市| 白玉县| 乃东县| 桐梓县| 武义县| 洞头县| 淳化县| 南阳市| 中牟县| 临西县| 读书| 明光市| 太康县| 茂名市| 黔西| 武功县| 云南省| 龙山县| 射洪县| 阿克苏市| 丰镇市| 津市市| 会泽县| 丰都县| 北安市| 阳朔县| 驻马店市| 铜川市| 新乐市| 崇仁县| 勐海县|