`
风吹过PP好冷
  • 浏览: 36873 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

利用 SetRedraw 减少闪烁 提高绘制效率

阅读更多

在实际应用中,CTabCtrl或者CListCtrl在插入大量数据时界面绘制变发生剧烈闪烁,并且插入效率较慢。利用SetRedraw可以解决此问题。实际测试CTabCtrl插入上千条记录未优化前需要30~40秒,优化后需要1~2秒。

 

摘自百度百科

CWnd::SetRedraw  void SetRedraw( BOOL bRedraw = TRUE );  参数: bRedraw 指定了重画标志的状态。如果这个参数为TRUE,则重画标志被设置;如果为FALSE,则该标志被清除。  说明:  应用程序调用SetRedraw以允许重画变化或防止变化被重画。

  这个成员函数设置或清除重画标志。当重画标志被清除时,在每次变化以后,内容不会更新,直到重画标志被设置才会重新绘出。例如,如果一个应用程序需要在列表框中加入几个项,则可以清除重画标志,加入项,然后设置重画标志。最后,应用程序可以调用Invalidate或InvalidateRect成员函数以使列表框被重画.

 

相关代码:

class CWndRedraw
{
public:
    CWndRedraw(CWnd *pWnd)
    {
        m_pWnd = pWnd;
        if(m_pWnd)
        {
            m_pWnd->SetRedraw(FALSE);
        }
    }
    ~CWndRedraw()
    {
        if(m_pWnd)
        {
            try
            {
                m_pWnd->SetRedraw(TRUE);
            }
            catch (...)
            {
                // throw no exception in destructor
            }
        }
    }
private:
    CWnd* m_pWnd;
};
 
分享到:
评论

相关推荐

    PB中常用的函数

    dw_list.Retrieve( ) setredraw() 的使用方法,一般情况是 控件名.setredraw(Boolean)

    VC中的所有WM消息.doc

    1. windows消息WM_ 2. WM_NULL = $0000; 3. WM_CREATE = $0001; 4. 应用程序创建一个窗口 5. WM_DESTROY = $0002;...19. WM_SETREDRAW = $000B; 20. 设置窗口是否能重画 21. WM_SETTEXT = $000C;

    C++ 关于MFC List Control 控件的总结

    1\在开发项目时,使用到了 listcontrol 控件,就一些问题,做一下备注,以备以后使用 ... 来禁止 重画,这样可以提高效率.当添加完成后,可以 使用 .SetRedraw(true); 重新启用重画  (5) 添加项目: m_List_IpList.Inse

    PowerBuilder9.0框架

    PB9框架,适合正在PB道路上摸索的人。讲解PB最初框架的搭建

    Window 消息大全

    WM_SPOOLERSTATUS= $002A //每当打印管理列队增加或减少一条作业时发出此消息 WM_DRAWITEM= $002B //当button,combobox,listbox,menu的可视外观改变时发送此消息给这些空件的所有者 WM_MEASUREITEM= $002C //当...

    背景色可渐变的静态文本框 学习版

    调用函数后,要使函数效果显示出来,需将本控件或拥有控件的窗口setredraw(true)一下(多方努力,还没办法把这个缺陷解决)。 setbktext(int mode, int bands, int rs, int gs, int bs, int re, int ge, int be) 设置...

    易语言-Windows消息大全易语言版转换程序

    改变enable状态WM_SETREDRAW = 11;设置窗口是否能重画WM_SETTEXT = 12;应用程序发送此消息来设置一个窗口的文本WM_GETTEXT = 13;应用程序发送此消息来复制对应窗口的文本到缓冲区WM_GETTEXTLENGTH = 14;得到与一个...

Global site tag (gtag.js) - Google Analytics