日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

窗口刷新 Invalidate UpdateWindow RedrawWindow

發(fā)布時間:2025/3/12 编程问答 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 窗口刷新 Invalidate UpdateWindow RedrawWindow 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

?窗口刷新的幾個函數(shù):InvalidateUpdateWindowRedrawWindow?

?

一:什么時候才會發(fā)生重繪窗口的消息??
??????當(dāng)需要更新或重新繪制窗口的外觀時,應(yīng)用程序就會發(fā)送WM_PAINT消息。對窗口進(jìn)行重新繪制。?

二:Invalidate()?--?RedrawWindow()?--?UpdateWindow()三個函數(shù)有什么異同??
?????Invalidate()是強制系統(tǒng)進(jìn)行重畫,但是不一定就馬上進(jìn)行重畫因為Invalidate()只是通知系統(tǒng),此時的窗口已經(jīng)變?yōu)闊o效。強制系統(tǒng)調(diào)用WM_PAINT,而這個消息只是Post就是將該消息放入消息隊列。當(dāng)執(zhí)行到WM_PAINT消息時才會對敞口進(jìn)行重繪。?
????UpdateWindow只向窗體發(fā)送WM_PAINT消息,在發(fā)送之前判斷GetUpdateRect(hWnd,NULL,TRUE)看有無可繪制的客戶區(qū)域,如果沒有,則不發(fā)送WM_PAINT?
????RedrawWindow()則是具有Invalidate()UpdateWindow()的雙特性。聲明窗口的狀態(tài)為無效,并立即更新窗口,立即調(diào)用WM_PAINT消息處理。?

三:刷新組合
InvalidateRect(hctrl,null,true)?;?

UpdateWindow(hctrl);?
這兩個函數(shù)組合起來是什么意思呢?

InvalidateRect是會觸發(fā)WM_PAINT事件,但是不是立即就觸發(fā),一般都會等當(dāng)前操作的過程結(jié)束才觸發(fā),?如果需要立即觸發(fā),那么配合UpdateWindow()使用就可以了。

先執(zhí)行InvalidateRect,再執(zhí)行UpdateWindow().



/************************************************************************************/

1.Invalidate在消息隊列中加入一條WM_PAINT消息,其無效區(qū)為整個客戶區(qū)。
2.UpdateWindow直接發(fā)送一個WM_PAINT消息,其無效區(qū)范圍就是消息隊列中WM_PAINT消息(最多只有一條)的無效區(qū)。
3.效果很明顯,當(dāng)調(diào)用Invalidate之后,屏幕不一定馬上更新,因為WM_PAINT息不一定在隊列頭部,而調(diào)用UpdateWindow會使WM_PAINT消息馬上執(zhí)行的,繞過了消息隊列。
4.如果調(diào)用Invalidate之后想馬上更新屏幕,那就加上UpdateWindow()條語句。?
MSDN的解釋?
UpdateWindow?
The?UpdateWindow?function?updates?the?client?area?of?the?specified?window?by?sending?a?WM_PAINT?

message?to?the?window?if?the?window's?update?region?is?not?empty.?The?function?sends?a?WM_PAINT

message?directly?to?the?window?procedure?of?the?specified?window,?bypassing?the?application?queue.?

If?the?update?region?is?empty,?no?message?is?sent.??

InvalidateRect?
The?system?sends?a?WM_PAINT?message?to?a?window?whenever?its?update?region?is?not?empty?and

there?are?no?other?messages?in?the?application?queue?for?that?window.??

翻譯成中文大概的解釋如下:?
??UpdateWindow:如果有無效區(qū),則馬上sending?a?WM_PAINT?message到窗口處理過程,不進(jìn)消息隊列進(jìn)行排隊等待,立即刷新窗口,否則,什么都不做。?
InvalidateRect:設(shè)置無效區(qū),如果為NULL參數(shù),則設(shè)置整個窗口為無效區(qū)。當(dāng)應(yīng)用程序的那個窗口的消息隊列為空時,則sending?a?WM_PAINT?message(即使更新區(qū)域為空).sending?a?WM_PAINT?message的所有InvalidateRect的更新區(qū)域會累加。?

1:設(shè)置無效區(qū)?
InvalidateRect?

2:立即刷新?
UpdateWindow();?

如果不調(diào)用?InvalidateRect就調(diào)用?UpdateWindow,那么UpdateWindow什么都不做。???????
如果調(diào)用?InvalidateRect?后不調(diào)用UpdateWindow,則系統(tǒng)會自動在窗口消息隊列為空的時候,系統(tǒng)自動發(fā)送一WM_PAINT消息。?

調(diào)用UpdateWindow()時將會發(fā)送一個WM_PAINT消息,而應(yīng)用程序在接收到WM_PAINT消息后,將自動地調(diào)用Invalidate(),所以,在程序代碼中,不一定要出現(xiàn)Invalidate()!

UpdateWindow()就是立即發(fā)送WM_PAINT消息,只對聲明無效的區(qū)域起作用,???
??Invalidate()則是聲明無效的方式之一。

Invalidate()表示客戶區(qū)域無效,在下次WM_PAINT發(fā)生時重繪。而WM_PAINT是由系統(tǒng)進(jìn)行維護(hù)的,每當(dāng)CWnd的更新區(qū)域不為空,并且在應(yīng)用程序的窗口消息隊列中沒有其它消息時,Windows就發(fā)送一條WM_PAINT消息。???
??Invalidate里面有個bool型的參數(shù),用來標(biāo)識重繪的時候是否用背景色填充。是不是用SetBkcolor函數(shù)?下去繼續(xù)研究。

updateWindow則是要求系統(tǒng)對區(qū)域進(jìn)行立即重繪。

看到有人在網(wǎng)上提出問題,他在Invalidate后面又寫了繪圖的函數(shù)但是沒有執(zhí)行,因為invalidate執(zhí)行過以后轉(zhuǎn)到PAINT命令了。所以后面的都沒有顯示。

也終于想通我繪的圖一直在閃啊閃,因為我在PAINT里面用到Invalidate()函數(shù),所以他不停的自嵌套,倒是繪的圖不停的閃。

Invalidate讓客戶區(qū)處于可以重畫的狀態(tài),而UpdateWindow開始重畫,但是它先判斷客戶區(qū)是否為空,不空UpdateWindow不執(zhí)行,為空才執(zhí)行重畫。

Invalidat最后也是調(diào)用InvalidatRect,windows?API里只有InvalidatRect的。

?

總結(jié)

以上是生活随笔為你收集整理的窗口刷新 Invalidate UpdateWindow RedrawWindow的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

主站蜘蛛池模板: 成人a站 | 中日韩在线观看 | 久久久久人妻一区精品色欧美 | 国产精品成人免费精品自在线观看 | 天堂av.com| 在线看av网址 | 日本中文不卡 | 日本资源在线 | 国产精品一区二区免费在线观看 | 国产一二三四在线 | 国产精品国产av | 欧美极品少妇xxxxⅹ免费视频 | 天天爽夜夜爽夜夜爽精品视频 | 一级作爱视频 | 男人天堂视频在线观看 | 亚洲伊人精品 | 久久不射网站 | 亚洲码无人客一区二区三区 | www.爆操| 啪啪在线观看 | 亚洲一区二区三区日韩 | 久久欧美 | 爱爱高潮视频 | 中文精品无码中文字幕无码专区 | 欧美在线观看一区二区三区 | 国产高清久久 | 91蜜桃视频在线观看 | 国产剧情在线 | 99国产精品久久久久久久 | 午夜精品成人 | 91久久精品www人人做人人爽 | 中文字幕在线二区 | av片免费 | 永久免费看黄网站 | 狠狠干夜夜 | 国产成人一区二区三区别 | 操操操插插插 | 日日干日日操 | 精品成人av一区二区三区 | 精品人妻一区二区三 | 国产激情视频一区二区 | www.日韩精品 | 国产亚洲综合av | 奇米中文字幕 | 神马午夜电影一区二区三区在线观看 | 午夜8888 | 亚洲自拍中文字幕 | 成人黄色片视频 | 91福利一区| 久久亚洲综合国产精品99麻豆精品福利 | 久久视频免费 | 欧美性生交xxxxx久久久缅北 | 91免费在线 | 三浦惠理子aⅴ一二三区 | 超碰日日夜夜 | 国产高清区 | 久久伊人99 | 日本va欧美va欧美va精品 | 91网站大全 | 四虎网站在线播放 | 免费无遮挡无码永久在线观看视频 | 视频久久 | 国产视频一区二区三区在线观看 | 淫片网站 | av免费精品 | 久久久久久久999 | 麻豆成人精品 | 操操干 | 97夜夜操| 亚洲一区二区日韩 | www.av视频在线观看 | 全黄一级男人和女人 | 肉色欧美久久久久久久免费看 | 国产精品a级 | 中文字幕在线视频观看 | 日日夜夜婷婷 | 精品久久久久久久久久久久久 | 久操福利在线 | 精品白浆| 91在现看 | 裸体喂奶一级裸片 | 99亚洲国产精品 | 黄色一级片免费 | 女同互舔视频 | www.九色| 一区二区视频播放 | 日韩av不卡在线 | 日韩av男人的天堂 | 我看黄色一级片 | 极品美女销魂一区二区三区 | 亚洲精品第一页 | 爱豆国产剧免费观看大全剧集 | 91情侣视频 | 中文在线免费视频 | 已婚少妇美妙人妻系列 | 国产中文字幕一区二区 | 91九色pron| 男生看的污网站 | 国产亚洲欧美精品久久久www |