假设对话框上有一个CListCtrl类的实例m_list,
m_list里面有400个item。对话框上还有一个按钮,
一按按钮,就把m_list最后面200个item删掉。那么我在
按钮的响应函数里写:
fow(i=0;i<200;i++)
m_list.DeleteItem(m_list.GetItemCount()-1);
这样,发现每删除一条item,m_list都要刷新一次,很慢,
删除200条需要4-5秒。有没有办法都删完再刷新呢?
我知道在C#中可以在删之前m_list.BeginUpdate(),
在删之后m_list.EndUpdate().那么VC里面有没有办法呢?
m_list里面有400个item。对话框上还有一个按钮,
一按按钮,就把m_list最后面200个item删掉。那么我在
按钮的响应函数里写:
fow(i=0;i<200;i++)
m_list.DeleteItem(m_list.GetItemCount()-1);
这样,发现每删除一条item,m_list都要刷新一次,很慢,
删除200条需要4-5秒。有没有办法都删完再刷新呢?
我知道在C#中可以在删之前m_list.BeginUpdate(),
在删之后m_list.EndUpdate().那么VC里面有没有办法呢?
2.如果确实需要一条一条的删除,用LockWindowUpdate函数锁住更新,然后用UnlockWindowUpdate更新。
RedrawWindow();
fow(i=0;i<200;i++)
m_list.DeleteItem(m_list.GetItemCount()-1);
m_list.SetRedraw(TRUE);
m_list.SetRedraw(FALSE);
m_list.DeleteAllItems();
m_list.SetRedraw(TRUE);
fow(i=0;i<200;i++)
m_list.DeleteItem(m_list.GetItemCount()-1)
m_list.SetRedraw(TRUE);
不过你还是要闪一下的,要完全不闪要自己写了