• <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():

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

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

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

            UpdateWindow():
                 UpdateWindow( )的作用是使窗口立即重繪。調用Invalidate等函數后窗口不會立即重繪,這是由于WM_PAINT消息的優先級很低,它需要等消息隊列中的其它消息發送完后才能被處理。調用UpdateWindow函數可使WM_PAINT被直接發送到目標窗口,從而導致窗口立即重繪。

            UpdateWindow:如果有無效區,則馬上sending a WM_PAINT message到窗口處理過程,不進消息隊列進行排隊等待,立即刷新窗口,否則,什么都不做。
             InvalidateRect:設置無效區,如果為NULL參數,則設置整個窗口為無效區。當應用程序的那個窗口的消息隊列為空時,則sending a WM_PAINT message(即使更新區域為空).在sending a WM_PAINT message的所有InvalidateRect的更新區域會累加。

             1:設置無效區
             InvalidateRect

             2:立即刷新
             UpdateWindow();

            如果不調用 InvalidateRect就調用 UpdateWindow,那么UpdateWindow什么都不做。 ??????
            如果調用 InvalidateRect 后不調用UpdateWindow,則系統會自動在窗口消息隊列為空的時候,系統自動發送一WM_PAINT消息。

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

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

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

             updateWindow則是要求系統對區域進行立即重繪。

             看到有人在網上提出問題,他在Invalidate后面又寫了繪圖的函數但是沒有執行,因為invalidate執行過以后轉到PAINT命令了。所以后面的都沒有顯示。

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

             

            Invalidate讓客戶區處于可以重畫的狀態,而UpdateWindow開始重畫,但是它先判斷客戶區是否為空,不空UpdateWindow不執行,為空才執行重畫。

             

            Invalidat最后也是調用InvalidatRect,在windows API里只有InvalidatRect的

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

            <2025年5月>
            27282930123
            45678910
            11121314151617
            18192021222324
            25262728293031
            1234567

            導航

            統計

            文章分類

            最新評論

            怡红院日本一道日本久久| 97精品国产97久久久久久免费| 日日狠狠久久偷偷色综合96蜜桃| 国产巨作麻豆欧美亚洲综合久久 | 久久亚洲精品无码aⅴ大香| 国产精品久久久久免费a∨| 国产A三级久久精品| 国产亚洲综合久久系列| 久久成人永久免费播放| 麻豆精品久久久久久久99蜜桃| aaa级精品久久久国产片| 久久久久亚洲精品无码网址| 人妻无码αv中文字幕久久 | 久久天天躁狠狠躁夜夜av浪潮| 亚洲精品无码专区久久久| 国产V亚洲V天堂无码久久久| 亚洲精品美女久久久久99小说| 亚洲欧美日韩中文久久| 久久国产免费直播| 99久久国语露脸精品国产| 久久精品国产亚洲AV影院| 久久久久久a亚洲欧洲aⅴ | 伊人久久国产免费观看视频| 国产精品免费福利久久| 欧美精品九九99久久在观看| 99久久婷婷国产综合精品草原| 久久无码人妻一区二区三区 | 国产精品亚洲综合久久| 999久久久免费国产精品播放| 婷婷伊人久久大香线蕉AV | 久久久久久国产精品免费免费 | 99久久亚洲综合精品网站| 成人久久精品一区二区三区| 久久精品免费一区二区| 久久久久久久久久久| 久久亚洲中文字幕精品一区四| 久久精品国产精品青草app| 久久久久无码精品国产| 久久亚洲精品成人av无码网站| 久久综合精品国产二区无码| 久久香蕉国产线看观看精品yw|