• <ins id="pjuwb"></ins>
    <blockquote id="pjuwb"><pre id="pjuwb"></pre></blockquote>
    <noscript id="pjuwb"></noscript>
          <sup id="pjuwb"><pre id="pjuwb"></pre></sup>
            <dd id="pjuwb"></dd>
            <abbr id="pjuwb"></abbr>

            UpdateData、Invalidate、InvalidateRect和UpdateWindow

            UpdateData():

                當(dāng)你使用了ClassWizard建立了控件和變量之間的聯(lián)系后:當(dāng)你修改了變量的值,而希望對(duì)話框控件更新顯示,就應(yīng)該在修改變量后調(diào)用UpdateData(FALSE);如果你希望知道用戶在對(duì)話框中到底輸入了什么,就應(yīng)該在訪問(wèn)變量前調(diào)用UpdateData(TRUE),將控件的輸入映射到變量中。

            Invalidate():
                 該函數(shù)的作用是使整個(gè)窗口客戶區(qū)無(wú)效。窗口的客戶區(qū)無(wú)效意味著需要重繪,例如,如果一個(gè)被其它窗口遮住的窗口變成了前臺(tái)窗口,那么原來(lái)被遮住的部分就是無(wú)效的,需要重繪。這時(shí)Windows會(huì)在應(yīng)用程序的消息隊(duì)列中放置WM_PAINT消息。MFC為窗口類提供了WM_PAINT的消息處理函數(shù)OnPaint,OnPaint負(fù)責(zé)重繪窗口。視圖類有一些例外,在視圖類的OnPaint函數(shù)中調(diào)用了OnDraw函數(shù),實(shí)際的重繪工作由OnDraw來(lái)完成。參數(shù)bErase為TRUE時(shí),重繪區(qū)域內(nèi)的背景 將被擦除,否則,背景將保持不變。

            InvalidateRect():
                該函數(shù)的功能與Invalidate基本一樣,不同的是,它是使指定的某個(gè)區(qū)域無(wú)效,需要輸入一個(gè)區(qū)域。

            UpdateWindow():
                 UpdateWindow( )的作用是使窗口立即重繪。調(diào)用Invalidate等函數(shù)后窗口不會(huì)立即重繪,這是由于WM_PAINT消息的優(yōu)先級(jí)很低,它需要等消息隊(duì)列中的其它消息發(fā)送完后才能被處理。調(diào)用UpdateWindow函數(shù)可使WM_PAINT被直接發(fā)送到目標(biāo)窗口,從而導(dǎo)致窗口立即重繪。

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

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

             2:立即刷新
             UpdateWindow();

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

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

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

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

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

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

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

             

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

             

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

            posted on 2008-03-24 21:19 弱水一瓢 閱讀(1350) 評(píng)論(0)  編輯 收藏 引用 所屬分類: MFC

            <2025年7月>
            293012345
            6789101112
            13141516171819
            20212223242526
            272829303112
            3456789

            導(dǎo)航

            統(tǒng)計(jì)

            文章分類

            最新評(píng)論

            国产精品无码久久综合| 久久精品国产亚洲麻豆| 久久热这里只有精品在线观看| 精品一二三区久久aaa片| 久久精品无码专区免费青青| 草草久久久无码国产专区| 一级做a爰片久久毛片免费陪 | 国产91久久精品一区二区| 国产免费福利体检区久久| 国内精品久久久久影院薰衣草| 高清免费久久午夜精品| 久久人人爽人人人人爽AV| 久久久久国产一级毛片高清版| 亚洲国产精品成人AV无码久久综合影院 | 老男人久久青草av高清| 91精品国产综合久久婷婷| 久久经典免费视频| Xx性欧美肥妇精品久久久久久| 亚洲欧美伊人久久综合一区二区| 久久国产精品波多野结衣AV| 久久久无码一区二区三区| 一本色道久久综合狠狠躁篇| 国产精自产拍久久久久久蜜| 精品久久久久久成人AV| 一本色综合网久久| 亚洲第一永久AV网站久久精品男人的天堂AV | 久久电影网一区| 色88久久久久高潮综合影院| 思思久久99热免费精品6| 国产成人精品久久一区二区三区| av色综合久久天堂av色综合在| 久久天天躁狠狠躁夜夜2020| 国产精品午夜久久| 国产午夜精品久久久久九九电影 | 久久久久久亚洲精品不卡| 99国产欧美精品久久久蜜芽| 麻豆亚洲AV永久无码精品久久| 亚洲中文字幕无码久久2020| 国产免费久久精品99re丫y| 亚洲色欲久久久久综合网| 色播久久人人爽人人爽人人片aV|