

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、InvalidateRect只是增加重繪區(qū)域,在下次WM_PAINT的時候才生效InvalidateRect函數中的參數TRUE表示系統會在你畫之前用背景色將所選區(qū)域覆蓋一次,默認背景色為白色,可以通過設置BRUSH來改變背景色。Invalidate()之后:(MFC的,順便了)OnPaint()OnPrepareDC()OnDraw()所以只是刷新在OnPaint()和OnDraw()函數中的繪圖語句。其它地方沒有影響。Invalid
2、ate標記一個需要重繪的無效區(qū)域,并不意味著調用該函數后就立刻進行重繪。類似于PostMessage(WM_PAINT),需要處理到WM_PAINT消息時才真正重繪。以為您Invalidate之后還有其他的語句正在執(zhí)行,程序沒有機會去處理WM_PAINT消息,但當函數執(zhí)行完畢后,消息處理才得以進行。Invalidate只是放一個WM_PAINT消息在隊列里,不做別的,所以只有當當前函數返回后,進入消息循環(huán),取出WM_PAINT,才執(zhí)行P
3、AINT,所以不管Invalidate放哪里,都是最后的。InvalidateRect(hWnd向hWnd窗體發(fā)出WM_PAINT的消息,強制客戶區(qū)域重繪制,rect是你指定要刷新的區(qū)域,此區(qū)域外的客戶區(qū)域不被重繪,這樣防止客戶區(qū)域的一個局部的改動,而導致整個客戶區(qū)域重繪而導致閃爍,如果最后的參數為TRUE,則還向窗體發(fā)送WM_ERASEBKGND消息,使背景重繪,當然在客戶區(qū)域重繪之前。UpdateWindow只向窗體發(fā)送WM_PAI
4、NT消息,在發(fā)送之前判斷GetUpdateRect(hWndNULLTRUE)看有無可繪制的客戶區(qū)域,如果沒有,則不發(fā)送WM_PAINT如果希望立即刷新無效區(qū)域,可以在調用InvalidateRect之后調用UpdateWindow,如果客戶區(qū)的任一部分無效,則UpdateWindow將導致Windows用WM_PAINT消息調用窗口過程(如果整個客戶區(qū)有效,則不調用窗口過程)。這一WM_PAINT消息不進入消息隊列,直接由WINDOW
5、S調用窗口過程。窗口過程完成刷新以后立刻退出,WINDOWS將控制返回給程序中UpdateWindow調用之后的語句。(windows程序設計第5版P98)UpdateData()順便說下,這個函數不是刷新界面用的。UpdateData()參數為FALSE時,將界面上控件綁定的變量的數據導到控件內,參數為TRUE時,導入方向則相反CClientDCCWindowDC區(qū)別不大可以說CWindowDC包含了CClientDC就拿記事本來說C
6、ClientDC就只是白白的我們可以編輯文字的那個區(qū)域是客戶區(qū)CWindowDC除了上面說的白白區(qū)域還包括菜單欄和工具欄等CClientDC和CWindowDC與CPaintDC的區(qū)別大點在DC的獲取方面CClientDC和CWindowDC使用的是并只能是GetDC和ReleaseDCCPaintDC使用的是并只能是BeginPaint和EndPaintCPaintDC只能用在響應WM_PAINT事件CClientDCCWindowD
7、C只能用在響應非WM_PAINT事件關于WM_PAINT事件系統會在多個不同的時機發(fā)送WM_PAINT消息:當第一次創(chuàng)建一個窗口時,當改變窗口的大小時,當把窗口從另一個窗口背后移出時,當最大化或最小化窗口時,等等,這些動作都是由系統管理的,應用只是被動地接收該消息,在消息處理函數中進行繪制操作;大多數的時候應用也需要能夠主動引發(fā)窗口中的繪制操作,比如當窗口顯示的數據改變的時候,這一般是通過InvalidateRect和Invalidat
8、eRgn函數來完成的。InvalidateRect和InvalidateRgn把指定的區(qū)域加到窗口的UpdateRegion中,當應用的消息隊列沒有其他消息時,如果窗口的UpdateRegion不為空時,系統就會自動產生WM_PAINT消息。系統為什么不在調用Invalidate時發(fā)送WM_PAINT消息呢?又為什么非要等應用消息隊列為空時才發(fā)送WM_PAINT消息呢?這是因為系統把在窗口中的繪制操作當作一種低優(yōu)先級的操作,于是盡可能地
9、推后做。不過這樣也有利于提高繪制的效率:兩個WM_PAINT消息之間通過InvalidateRect和InvaliateRgn使之失效的區(qū)域就會被累加起來,然后在一個WM_PAINT消息中一次得到更新,不僅能避免多次重復地更新同一區(qū)域,也優(yōu)化了應用的更新操作。像這種通過InvalidateRect和InvalidateRgn來使窗口區(qū)域無效,依賴于系統在合適的時機發(fā)送WM_PAINT消息的機制實際上是一種異步工作方式,也就是說,在無效化
10、窗口區(qū)域和發(fā)送WM_PAINT消息之間是有延遲的;有時候這種延遲并不是我們希望的,這時我們當然可以在無效化窗口區(qū)域后利用SendMessage發(fā)送一條WM_PAINT消息來強制立即重畫,但不如使用WindowsGDI為我們提供的更方便和強大的函數:UpdateWindow和RedrawWindow。UpdateWindow會檢查窗口的UpdateRegion,當其不為空時才發(fā)送WM_PAINT消息;RedrawWindow則給我們更多的
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- let's-paint翻譯
- 〖bfq〗〖wm〗〖kmb〗
- 高考函數題型及方法總結
- 指數函數、對數函數及冪函數知識總結+典型考題
- 復合函數知識總結及例題
- Chinese Paint & Coating Markets .pdf
- wm公司招聘現狀及改進方案探討
- 函數總結(果凍)
- 函數總結大全
- opengl函數庫常用函數總結
- 對數公式及對數函數的總結
- WM移動電源創(chuàng)業(yè)計劃.pdf
- wm數據網關模板標簽說明
- 冪函數知識總結
- 二次函數總結及相關典型題目
- 函數解析式求法總結及練習題
- Orlicz空間中WM點及相關幾何性質研究.pdf
- ch7-reference-Hammer paint.doc
- WM公司薪酬體系優(yōu)化設計.pdf
- 冪函數知識點總結及練習題
評論
0/150
提交評論