• <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>
            隨筆-14  評論-8  文章-0  trackbacks-0

              雙緩沖技術能消除窗口繪制時的閃爍,使得窗體控件能夠平滑繪制,這誰都知道。
              但并不是每個人都理解它,我不就是其中一個么
              Goolge了半天,別人實現(xiàn)雙緩沖的心得也看了半天多一點,還是不知其所然。接下來的事情有點機緣巧合,但都要感謝MSDN,這也再次印證了“MSDN是最好的老師”這句話。
               我選擇了在 OnPaint() 函數(shù)中來實現(xiàn)它,按照MSDN中“CDC::CreateCompatibleDC”一文,左右修改,瞎猜亂碰,竟然給我把效果弄出來了。于是又看了半天才有一點點了解,原來這就是雙緩沖。不多說了,代碼最真:

            void CRToolDlg::OnPaint()
            {
                
            //如果從托盤恢復,調(diào)用CDialog的OnPaint(),不然窗體無法畫出
                if(m_bComeFromTray) {
                    m_bComeFromTray 
            = FALSE;
                    CDialog::OnPaint();
                    
            return;
                }


                
            //重置記憶位圖和DC
                if(m_pBitmap->m_hObject != NULL)
                    m_pBitmap
            ->DeleteObject();
                
            if(m_pMemDC->m_hDC != NULL)
                    m_pMemDC
            ->DeleteDC();

                CRect rc;
                GetClientRect(
            &rc);

                
            //獲得屏幕DC
                m_pDC->m_hDC = ::GetDC(NULL);

                
            //為屏幕DC創(chuàng)建兼容的內(nèi)存DC 
                m_pMemDC->CreateCompatibleDC(m_pDC);

                
            //使繪制的位圖和客戶區(qū)一樣大
                m_pBitmap->CreateCompatibleBitmap(m_pDC, rc.Width(), rc.Height());
                m_pOldBitmap 
            = m_pMemDC->SelectObject(m_pBitmap);    //m_pMemDC選中m_pBitmap,并且返回上一個object,和我的第一篇文檔對應

                
            //雙緩沖
                m_pMemDC->BitBlt(rc.left, rc.top, rc.Width(), rc.Height(), m_pDC, rc.left, rc.top, SRCCOPY);
                m_pDC
            ->BitBlt(rc.left, rc.top, rc.Width(), rc.Height(), m_pMemDC, rc.left, rc.top, SRCCOPY);

                
            //選回舊設備,以釋放……
                m_pMemDC->SelectObject(m_pOldBitmap);
            }

              還要注意的是對象的new與delete,以及清除窗口背景的函數(shù),沒了。
              以上只是對話框里的實現(xiàn),至于文檔視圖,等待實踐。
            posted on 2009-03-18 10:20 崇文 閱讀(895) 評論(1)  編輯 收藏 引用

            評論:
            # re: 對話框中的雙緩沖 2010-01-23 23:12 | 崇文
            2010/1/23 這篇文章的思想是錯誤的。現(xiàn)在在回頭來看雙緩沖,原理很簡單,實現(xiàn)邏輯也并不復雜。當時我真昏了頭了。For the heck of it , still keep it!  回復  更多評論
              
            欧美激情精品久久久久久久| 亚洲国产成人久久综合碰| 久久精品国产久精国产思思| 亚洲国产另类久久久精品黑人 | 中文字幕乱码久久午夜| 色综合久久中文字幕无码| www亚洲欲色成人久久精品| 亚洲精品97久久中文字幕无码| 色婷婷综合久久久久中文一区二区| 久久精品国产亚洲一区二区| 久久免费视频6| 青青青青久久精品国产h| 久久乐国产综合亚洲精品| 久久久久国产一级毛片高清版| 久久精品国产欧美日韩99热| 精品久久人妻av中文字幕| 99久久做夜夜爱天天做精品| 91精品国产高清久久久久久国产嫩草| 亚洲国产日韩综合久久精品| 狠狠精品干练久久久无码中文字幕 | 97久久久久人妻精品专区| 尹人香蕉久久99天天拍| 亚洲国产成人精品无码久久久久久综合| 99精品国产99久久久久久97| 久久久久国产一区二区三区| 久久狠狠色狠狠色综合| 久久精品无码午夜福利理论片| 亚洲一级Av无码毛片久久精品| 亚洲国产精品久久66| 久久99精品综合国产首页| 人妻久久久一区二区三区| 久久精品国产久精国产果冻传媒| 久久久久久国产精品无码下载| 青青青青久久精品国产h| 亚洲国产精品久久久久网站| 91精品国产91久久久久福利| 国产成人无码久久久精品一| 69久久夜色精品国产69| 久久久久久a亚洲欧洲aⅴ| 99久久综合国产精品二区| 国产午夜精品久久久久九九电影|