国产一级a片免费看高清,亚洲熟女中文字幕在线视频,黄三级高清在线播放,免费黄色视频在线看

打開APP
userphoto
未登錄

開通VIP,暢享免費(fèi)電子書等14項(xiàng)超值服

開通VIP
Invalidate()與UpdateAllViews()
Invalidate()是讓程序重畫窗口。
UpdateAllViews()是在DOC/VIEW結(jié)構(gòu)中,當(dāng)一個(gè)視圖的數(shù)據(jù)改變后,通知所有視圖作相應(yīng)的改變,和重畫毫無關(guān)系.
 
Invalidate()是使窗口無效,使系統(tǒng)向其發(fā)WM_PAINT消息,使的程序的OnPaint被調(diào)用重畫客戶區(qū)。
而UpdateAllViews()是文檔與視之間的聯(lián)系,調(diào)用它會(huì)使程序與此文檔相關(guān)的所有視的UpdateView被調(diào)用至于是否重畫以及怎么畫是由各視的UpdateView來決定的。
 
Invalidate()是Cwnd的成員函數(shù),與DOC-VIEW無關(guān);
UpdateAllViews是CDocument的成員函數(shù),具體體現(xiàn)DOC-VIEW的精神。

如果僅重畫當(dāng)前窗口用 this->Invalidate();
如果通知所有和當(dāng)前文檔相關(guān)的窗口重畫用GetDocument()->UpdateAllViews()(在View中)或this->UpdateAllViews()(在Doc中)。
Invalidate()函數(shù)產(chǎn)生一條WM_PAINT消息,并送入windows消息隊(duì)列中,是窗口產(chǎn)生重畫。
而,UpdateAllViews 并不進(jìn)入windows消息隊(duì)列中,直接產(chǎn)生重畫

*******************************************
Invalidate函數(shù)的總結(jié)
InvalidateRect只是增加重繪區(qū)域,在下次WM_PAINT的時(shí)候才生效
InvalidateRect函數(shù)中的參數(shù)TRUE表示系統(tǒng)會(huì)在你畫之前用背景色將所選區(qū)域覆蓋一次,默認(rèn)背景色為白色,可以通過設(shè)置BRUSH來改變背景色。
Invalidate()之后:(MFC的,順便了)
OnPaint()->OnPrepareDC()->OnDraw()
所以只是刷新在OnPaint()和OnDraw()函數(shù)中的繪圖語句。其它地方?jīng)]有影響。
Invalidate標(biāo)記一個(gè)需要重繪的無效區(qū)域,并不意味著調(diào)用該函數(shù)后就立刻進(jìn)行重繪。類似于PostMessage(WM_PAINT),需要處理到WM_PAINT消息時(shí)才真正重繪。以為您Invalidate之后還有其他的語句正在執(zhí)行,程序沒有機(jī)會(huì)去處理WM_PAINT消息,但當(dāng)函數(shù)執(zhí)行完畢后,消息處理才得以進(jìn)行。
Invalidate只是放一個(gè)WM_PAINT消息在隊(duì)列里,不做別的,所以只有當(dāng)當(dāng)前函數(shù)返回后,進(jìn)入消息循環(huán),取出WM_PAINT,才執(zhí)行PAINT,所以不管Invalidate放哪里,都是最后的。
InvalidateRect(hWnd,&rect,TRUE);向hWnd窗體發(fā)出WM_PAINT的消息,強(qiáng)制客戶區(qū)域重繪制,
rect是你指定要刷新的區(qū)域,此區(qū)域外的客戶區(qū)域不被重繪,這樣防止客戶區(qū)域的一個(gè)局部的改動(dòng),而導(dǎo)致整個(gè)客戶區(qū)域重繪而導(dǎo)致閃爍,如果最后的參數(shù)為TRUE,則還向窗體發(fā)送WM_ERASEBKGND消息,使背景重繪,當(dāng)然在客戶區(qū)域重繪之前。
UpdateWindow只向窗體發(fā)送WM_PAINT消息,在發(fā)送之前判斷GetUpdateRect(hWnd,NULL,TRUE)看有無可繪制的客戶區(qū)域,如果沒有,則不發(fā)送WM_PAINT
如果希望立即刷新無效區(qū)域,可以在調(diào)用InvalidateRect之后調(diào)用UpdateWindow,如果客戶區(qū)的任一部分無效,則UpdateWindow將導(dǎo)致Windows用WM_PAINT消息調(diào)用窗口過程(如果整個(gè)客戶區(qū)有效,則不調(diào)用窗口過程)。這一WM_PAINT消息不進(jìn)入消息隊(duì)列,直接由WINDOWS調(diào)用窗口過程。窗口過程完成刷新以后立刻退出,WINDOWS將控制返回給程序中UpdateWindow調(diào)用之后的語句。(windows程序設(shè)計(jì)第5版 P98)
UpdateData()順便說下,這個(gè)函數(shù)不是刷新界面用的。
UpdateData();參數(shù)為FALSE時(shí),將界面上控件綁定的變量的數(shù)據(jù)導(dǎo)到控件內(nèi),參數(shù)為TRUE時(shí),導(dǎo)入方向則相反。
本站僅提供存儲(chǔ)服務(wù),所有內(nèi)容均由用戶發(fā)布,如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點(diǎn)擊舉報(bào)。
打開APP,閱讀全文并永久保存 查看更多類似文章
猜你喜歡
類似文章
WM_PAINT詳解
轉(zhuǎn):關(guān)于WM
Invalidate和UpdateWindow的區(qū)別
RedrawWindow(NULL, NULL, RDW
VC Invalidate InvalidateRect UpdateWindow
VC窗口刷新InvalidateRect和UpdateWindow
更多類似文章 >>
生活服務(wù)
分享 收藏 導(dǎo)長圖 關(guān)注 下載文章
綁定賬號成功
后續(xù)可登錄賬號暢享VIP特權(quán)!
如果VIP功能使用有故障,
可點(diǎn)擊這里聯(lián)系客服!

聯(lián)系客服