开发笔记

  • 首页
  • 工具箱
三味线的博客
  1. 首页
  2. MFC
  3. 正文

MFC双缓存技术代码

2018-04-18 926点热度 1人点赞 0条评论

屏蔽背景刷新,在View中添加对WM_ERASEBKGND的响应,直接返回TRUE:

BOOL CTEMV1View::OnEraseBkgnd(CDC* pDC)
{
    // TODO: 在此添加消息处理程序代码和/或调用默认值
    return TRUE;
    //return CView::OnEraseBkgnd(pDC);
}

在OnDraw函数中添加代码:

void CTEMV1View::OnDraw(CDC* pDC)
{
    CTEMV1Doc* pDoc = GetDocument();
    ASSERT_VALID(pDoc);
    if (!pDoc)
        return;
    // TODO: 在此处为本机数据添加绘制代码
    CRect rect;
    GetClientRect(&rect);
    CDC memDC;//用于缓冲作图内存DC
    CBitmap bmp;//内存中承载临时图像的位图
    memDC.CreateCompatibleDC(pDC);//依附窗口DC创建兼容DC
    bmp.CreateCompatibleBitmap(&memDC, rect.Width(), rect.Height());//创建兼容位图
    memDC.SelectObject(&bmp);//将位图选择进内存DC
    memDC.FillSolidRect(rect, pDC->GetBkColor());//按原背景填充,否则会是黑色
    pDoc->m_TemDraw.OnDraw(&memDC);//在内存DC作图,此处为自己的绘制代码
    pDC->BitBlt(0, 0, rect.Width(), rect.Height(), &memDC, 0, 0, SRCCOPY);//将内存DC上的图像拷贝到前台
    memDC.DeleteDC();//删除DC
    bmp.DeleteObject();//删除位图
}
标签: MFC
最后更新:2020-06-06

三味线

不吃咸鱼的喵

点赞
< 上一篇

文章评论

razz evil exclaim smile redface biggrin eek confused idea lol mad twisted rolleyes wink cool arrow neutral cry mrgreen drooling persevering
取消回复

Captcha Code

COPYRIGHT © 2022 voidcat.cn. ALL RIGHTS RESERVED.

Theme Kratos Made By Seaton Jiang

蜀ICP备18010095号-1