青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品

Error

C++博客 首頁 新隨筆 聯系 聚合 管理
  217 Posts :: 61 Stories :: 32 Comments :: 0 Trackbacks

////////////////////////////////////////////////////////////////

簡介:內存DC,又名“雙緩沖”,是解決windows窗口自繪中出現“閃屏”的常規手段。

1)、為屏幕 DC 創建兼容的內存 DC
2)、創建位圖
3)、把位圖選入設備環境
4)、把繪制好的圖形“拷貝“到屏幕上

 

看這個代碼:

首先看構造,從一個CDC構造。然后看了一下成員函數,好像沒幾個,估計這是一個可以完全替換的CDC的省心的東東。

然后看析構:析構是一個BitBit,聯想自己做內存DC的時候,最后一步也是內存到DC的貼圖動作。

公開接口就兩個,重載的CDC* 和 ->操作,直接能當作CDC使用。

這幾個細節需要注意:

1.m_bMemDC = !pDC->IsPrinting();  // 以前關注不多,這是用于判斷這個DC是不是用于print,如果是就不使用“內存DC”,至于為什么還不了解。我理解是沒有需要。

2.FillSolidRect(m_rect, pDC->GetBkColor());  // WM_ERASEBKGND,針對這個消息的細節處理。

 

這個類持有了一個“前臺”DC,它本身是一個“后臺”DC,每次后臺克隆前臺執行繪畫然后把結果貼回去。

這里還有一個細節,就是SelectObject。為了保證不泄漏,最好的辦法是,每次工作完成將所有的GDI對象復位。

///////////////////////////////////////////////////////////////

class CMemDC : public CDC
{
public:

    // constructor sets up the memory DC
    CMemDC(CDC* pDC) : CDC()
    {
        ASSERT(pDC != NULL);

        m_pDC = pDC;
        m_pOldBitmap = NULL;
#ifndef _WIN32_WCE_NO_PRINTING
        m_bMemDC = !pDC->IsPrinting();
#else
        m_bMemDC = FALSE;
#endif

        if (m_bMemDC)    // Create a Memory DC
        {
            pDC->GetClipBox(&m_rect);
            CreateCompatibleDC(pDC);
            m_bitmap.CreateCompatibleBitmap(pDC, m_rect.Width(), m_rect.Height());
            m_pOldBitmap = SelectObject(&m_bitmap);
#ifndef _WIN32_WCE
            SetWindowOrg(m_rect.left, m_rect.top);
#endif
            // EFW - Bug fix - Fill background in case the user has overridden
            // WM_ERASEBKGND.  We end up with garbage otherwise.
            // CJM - moved to fix a bug in the fix.
            FillSolidRect(m_rect, pDC->GetBkColor());
        }
        else        // Make a copy of the relevent parts of the current DC for printing
        {
#if !defined(_WIN32_WCE) || ((_WIN32_WCE > 201) && !defined(_WIN32_WCE_NO_PRINTING))
            m_bPrinting = pDC->m_bPrinting;
#endif
            m_hDC       = pDC->m_hDC;
            m_hAttribDC = pDC->m_hAttribDC;
        }

    }

    // Destructor copies the contents of the mem DC to the original DC
    ~CMemDC()
    {
        if (m_bMemDC)
        {
            // Copy the offscreen bitmap onto the screen.
            m_pDC->BitBlt(m_rect.left, m_rect.top, m_rect.Width(), m_rect.Height(),
                          this, m_rect.left, m_rect.top, SRCCOPY);

            //Swap back the original bitmap.
            SelectObject(m_pOldBitmap);
        } else {
            // All we need to do is replace the DC with an illegal value,
            // this keeps us from accidently deleting the handles associated with
            // the CDC that was passed to the constructor.
            m_hDC = m_hAttribDC = NULL;
        }
    }

    // Allow usage as a pointer
    CMemDC* operator->() {return this;}
    // Allow usage as a pointer
    operator CMemDC*() {return this;}

private:
    CBitmap  m_bitmap;      // Offscreen bitmap
    CBitmap* m_pOldBitmap;  // bitmap originally found in CMemDC
    CDC*     m_pDC;         // Saves CDC passed in constructor
    CRect    m_rect;        // Rectangle of drawing area.
    BOOL     m_bMemDC;      // TRUE if CDC really is a Memory DC.
};

posted on 2012-10-08 10:41 Enic 閱讀(247) 評論(0)  編輯 收藏 引用 所屬分類: 代碼片段分享

只有注冊用戶登錄后才能發表評論。
網站導航: 博客園   IT新聞   BlogJava   博問   Chat2DB   管理


青青草原综合久久大伊人导航_色综合久久天天综合_日日噜噜夜夜狠狠久久丁香五月_热久久这里只有精品
  • <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>
            这里只有精品在线播放| 亚洲自拍偷拍色片视频| 欧美日韩第一区| 欧美v国产在线一区二区三区| 久久se精品一区精品二区| 欧美一区免费视频| 久久亚洲捆绑美女| 欧美精品久久99| 国产精品久久久久久影视 | 亚洲国产天堂久久国产91| 免费日韩成人| 亚洲精品视频在线观看免费| 一区二区三区不卡视频在线观看| 亚洲欧美日韩国产成人| 久久久蜜桃一区二区人| 欧美日本三级| 国精产品99永久一区一区| 亚洲激情影院| 亚洲欧美久久| 欧美大片免费| 亚洲香蕉网站| 欧美**字幕| 国产免费成人av| 亚洲精选久久| 久久九九电影| 国产精品99久久久久久宅男| 久久久久国产一区二区| 欧美日韩中文字幕精品| 很黄很黄激情成人| 亚洲女性喷水在线观看一区| 欧美激情精品| 久久久福利视频| 国产精品亚洲第一区在线暖暖韩国| 加勒比av一区二区| 亚洲欧美色婷婷| 亚洲欧洲免费视频| 久久美女艺术照精彩视频福利播放| 欧美体内she精视频在线观看| 亚洲大胆女人| 久久riav二区三区| 一本色道久久综合狠狠躁的推荐| 快she精品国产999| 国产一区91| 先锋资源久久| 亚洲手机视频| 欧美三日本三级少妇三2023| 亚洲精品免费一二三区| 玖玖视频精品| 欧美在线一区二区| 国产一区二区黄色| 久久精品亚洲乱码伦伦中文| 亚洲欧美日韩一区二区三区在线| 国产精品久久久999| 中文日韩欧美| 亚洲作爱视频| 欧美日韩综合另类| 亚洲色在线视频| 日韩性生活视频| 欧美午夜性色大片在线观看| 一区二区三区|亚洲午夜| 亚洲精品欧美一区二区三区| 欧美日韩蜜桃| 亚洲欧美国产精品va在线观看| 一区二区三区欧美| 国产精品日韩一区| 久久国产毛片| 麻豆国产精品777777在线| 亚洲电影免费观看高清完整版在线| 麻豆精品传媒视频| 欧美暴力喷水在线| 亚洲一区二区久久| 亚洲欧美日韩一区| 激情视频亚洲| 亚洲国产精品悠悠久久琪琪| 欧美日韩黄视频| 久久xxxx精品视频| 久久亚洲免费| 中文精品一区二区三区| 亚洲一区二区三区四区在线观看| 国产噜噜噜噜噜久久久久久久久| 久久九九国产精品| 欧美1区视频| 亚洲一区二区在线视频| 欧美一区亚洲| 99视频一区| 欧美一区二视频| 亚洲国产精品第一区二区三区| 亚洲精品久久久久| 国产美女搞久久| 欧美激情亚洲一区| 国产精品剧情在线亚洲| 噜噜噜久久亚洲精品国产品小说| 欧美激情一区二区三区全黄| 欧美一二三视频| 欧美gay视频激情| 欧美一级欧美一级在线播放| 蜜桃av一区二区三区| 午夜精品网站| 免费不卡中文字幕视频| 午夜精品久久久久久久蜜桃app | 亚洲女ⅴideoshd黑人| 在线观看日产精品| 亚洲在线视频免费观看| 最新日韩精品| 欧美在线一二三区| 亚洲一区影音先锋| 欧美福利一区二区三区| 久久久精品欧美丰满| 欧美日韩在线播放| 欧美黑人多人双交| 国内成人精品视频| 亚洲一级片在线观看| 亚洲乱码一区二区| 久久久天天操| 久久精品最新地址| 国产精品亚洲产品| 亚洲一区二区三| 一区二区三区欧美成人| 欧美成人午夜激情| 欧美大片在线看免费观看| 黄色日韩网站视频| 久久精品二区三区| 久久久之久亚州精品露出| 国产精品人成在线观看免费| 亚洲国产色一区| 91久久精品日日躁夜夜躁欧美 | 欧美日韩国产综合视频在线观看| 久久综合五月| 激情亚洲成人| 久久久久久色| 免费观看在线综合| 亚洲高清激情| 麻豆91精品| 欧美国产欧美亚州国产日韩mv天天看完整| 国产日韩欧美三级| 欧美一区二区三区四区高清 | 欧美一级午夜免费电影| 国产精品久久久91| 亚洲欧美视频一区二区三区| 亚洲综合电影| 国产精品丝袜xxxxxxx| 亚洲在线国产日韩欧美| 欧美一级理论性理论a| 国产日韩精品一区二区三区 | 亚洲成人自拍视频| 亚洲人人精品| 欧美日韩国产限制| 亚洲午夜免费福利视频| 欧美一区国产一区| 国产综合在线视频| 麻豆成人精品| 一本久久青青| 欧美中文字幕| 亚洲国产精品福利| 欧美图区在线视频| 午夜精品亚洲一区二区三区嫩草| 久久精品色图| 91久久国产综合久久| 欧美日韩一本到| 欧美在线观看一区二区| 亚洲国产mv| 欧美一区二区三区在线| 亚洲高清一区二区三区| 欧美日韩成人网| 欧美一区二区视频免费观看| 麻豆精品传媒视频| 亚洲天堂网站在线观看视频| 国产亚洲欧洲| 欧美日韩美女一区二区| 欧美伊人精品成人久久综合97 | 亚洲欧洲综合| 欧美一区二区三区四区在线观看| 在线欧美电影| 国产精品家庭影院| 久热re这里精品视频在线6| 一本色道**综合亚洲精品蜜桃冫| 麻豆免费精品视频| 午夜精品久久久久久久白皮肤| 亚洲国产mv| 国产三级精品在线不卡| 美女尤物久久精品| 在线一区二区三区做爰视频网站 | 一道本一区二区| 狠狠色狠狠色综合日日tαg | 亚洲精品国精品久久99热| 国产精品嫩草99av在线| 欧美fxxxxxx另类| 性久久久久久久久| 一区二区免费看| 欧美风情在线观看| 久久久精品免费视频| 亚洲一区二区三区午夜| 亚洲欧洲日本mm| 永久免费精品影视网站| 国产麻豆日韩| 国产精品日韩在线播放| 国产精品www994| 欧美日韩一区二区三区四区在线观看 | 欧美日韩国语| 欧美老女人xx|