• <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>

            唐吉訶德

              C++博客 :: 首頁 :: 聯(lián)系 :: 聚合  :: 管理
              5 Posts :: 75 Stories :: 3 Comments :: 0 Trackbacks

            常用鏈接

            留言簿(2)

            我參與的團隊

            搜索

            •  

            最新評論

            閱讀排行榜

            評論排行榜

            UpdateData():

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

            但是關于UpdateData函數(shù)卻有必要在這里講解一下。在這里UpdateData函數(shù)起到控制Edit Box 顯示內容的作用。當調用UpdataData (TRUE)的時候,程序會對控件對應的變量值進行刷新,也就是說會把控件中的輸入值賦給對應的變量。而調用UpdataData (FALSE)的時候,程序則會把相應變量的值顯示在對應的控件上面。
            Invalidate():

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

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

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

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

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

             2:立即刷新
             UpdateWindow();

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

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

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

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

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

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

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

             

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

             

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

             

            posted on 2010-04-26 23:07 心羽 閱讀(780) 評論(0)  編輯 收藏 引用
            久久青青国产| 久久久久久av无码免费看大片| 久久精品成人欧美大片| 久久久噜噜噜久久中文福利| 久久精品人人做人人爽97| 国产精品99久久久久久www| 亚洲天堂久久久| 国产精品美女久久久m| 久久国产精品二国产精品| 久久综合久久自在自线精品自| 久久综合中文字幕| 久久香蕉超碰97国产精品| 国产精品丝袜久久久久久不卡| 久久夜色精品国产噜噜噜亚洲AV | 久久国产精品成人片免费| 模特私拍国产精品久久| 久久夜色精品国产亚洲| 狠狠色婷婷久久一区二区| 99久久精品费精品国产| 日本强好片久久久久久AAA| 亚洲精品美女久久久久99小说 | 武侠古典久久婷婷狼人伊人| 精品熟女少妇av免费久久| 久久精品国产99国产精品亚洲| 久久精品国产只有精品66| 精品一区二区久久久久久久网站| 亚洲人成无码久久电影网站| 91久久精品无码一区二区毛片| 好属妞这里只有精品久久| 久久久久久亚洲Av无码精品专口| 性欧美大战久久久久久久| 欧洲国产伦久久久久久久 | 国产亚洲美女精品久久久2020| 亚洲国产小视频精品久久久三级 | 久久久久久国产精品免费无码 | 久久精品国产亚洲AV高清热| 久久妇女高潮几次MBA| 精品久久久无码人妻中文字幕| 久久夜色精品国产亚洲| 成人久久免费网站| 久久精品无码专区免费东京热|