zoukankan      html  css  js  c++  java
  • VC绘制控件如何防止闪烁

    理论上不管什么控件都适用,方法如下:

    新建一个MFC类,继承原来的控件类型,对于VC自动生成的类进行如下改动:

    首先覆盖 OnEraseBkgnd() 防止擦除时填涂背景:

    BOOL CXXXCtrl::OnEraseBkgnd(CDC* pDC)
    {
        return TRUE;
    }

    然后覆盖 OnPaint(),原理是先在内存DC中绘图,之后再一股脑将画出的东东填涂到窗体上。

    复制代码
    代码
    void CXXXCtrl::OnPaint()
    {
        CPaintDC dc(this);
        // TODO: 在此处添加消息处理程序代码
        CRect rect;
        CRect headerRect;
        CDC dcMem;    //内存DC
        CBitmap bmpMem;

        GetClientRect(&rect);
        dcMem.CreateCompatibleDC(&dc);
        bmpMem.CreateCompatibleBitmap(&dc, rect.Width(), rect.Height());
        dcMem.SelectObject(&bmpMem);
        dcMem.FillSolidRect(&rect, RGB(255,255,255));

        //这一句是调用默认的OnPaint(),把图形画在内存DC上
        DefWindowProc(WM_PAINT, (WPARAM)dcMem.m_hDC, (LPARAM)0);

        //输出
        dc.BitBlt(0,
            0,
            rect.Width(),
            rect.Height(),
            &dcMem,
            0,
            0,
            SRCCOPY);
        dcMem.DeleteDC();
        bmpMem.DeleteObject();
    }
    复制代码

    http://www.cnblogs.com/ddgg/archive/2010/07/16/1779131.html

  • 相关阅读:
    图片自动播放
    选项卡切换
    jquery实现全选、反选、不选
    JQuery $()后面的括号里的内容什么时候加引号,什么时候不加
    ajax跨域jsonp
    加班与效率
    提问的智慧
    程序员要勇于说不
    编程从业五年的十四条经验,句句朴实
    成为高效程序员的7个重要习惯
  • 原文地址:https://www.cnblogs.com/findumars/p/7486044.html
Copyright © 2011-2022 走看看