怎么克服ListCtrl闪烁的问题 对于一个ListCtrl控件,我设置了一个定时器,每隔500ms,就对ListCtrl中的每一行每一列调用SetItemText()更新一遍,但这样做,ListCtrl闪烁的比较厉害,问一下有什么解决的办法 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 to yjgx007(who's superior):不懂,给解释解释 插入或删除数据之前:SetRedraw(FALSE)插入或删除数据之后:SetRedraw(TRUE) To mynamelj(夏娃的诱惑):这样写之后,好像还需要点一下listCtrl控件,这样才能显示新信息,否则不更新 http://www.codeproject.com/listctrl/xlistctrl.asp 插入或者删除数据之前 LockWindowUpdate()插入或者删除数据之后 unLockWindowUpdate() http://blog.csdn.net/lixiaosan/archive/2006/04/07/653563.aspx22 不要逐行更新,全部SetItemText()后再更新。 用背景位图的方法,主要是在OnPaint()中做,方法如下:void MyCUserCtrl::OnPaint(){ CPaintDC dc(this); CRect rect; GetClientRect(&rect); CRect headerRect; GetDlgItem(0)->GetWindowRect(&headerRect); CDC MenDC;//内存ID表 CBitmap MemMap; MemDC.CreateCompatibleDC(&dc); MemMap.CreateCompatibleBitmap(&dc, rect.Width(), rect.Height()); MemDC.SelectObject(&MemMap); MemDC.FillSolidRect(&rect, RGB(228, 236, 243)); //这一句是调用默认的OnPaint(),把图形画在内存DC表上 DefWindowProc(WM_PAINT, (WPARAM)MemDC.m_hDC, (LPARAM)0); //输出 dc.BitBlt(0, headerRect.Height(), rect.Width(), rect.Height(), &MemDC, 0, headerRect.Height(), SRCCOPY); MemDC.DeleteDC(); MemMap.DeleteObject();} Use CListCtrl::Update and LVS_OWNERDATA 三个组合框相关运行时遇到的问题 过年发红包了 请问各位兄弟,如何吃掉QUERYENDSESSION消息? 100分敬上,谢谢! 怎么做一个最简单的解析器? 一个关于CString对象的拷贝问题 求助WinPcap在VC中配置方法(连接器的附加依赖库设置) 高手来看一看,怎样减少FTP超时连接时间 如何将应用程序加载到Status bar?然后如何传递,处理鼠标的消息? 有没有什么只能用VC做,其他工具做不了的东西? VC++ 怎么实现下面的图片中所示点之间的连线圆滑呢? 如何禁用Datagrid左下角的Spliter? 薪水加了500块,散分!
不懂,给解释解释
插入或删除数据之后:SetRedraw(TRUE)
这样写之后,好像还需要点一下listCtrl控件,这样才能显示新信息,否则不更新
插入或者删除数据之后 unLockWindowUpdate()
{
CPaintDC dc(this);
CRect rect;
GetClientRect(&rect); CRect headerRect;
GetDlgItem(0)->GetWindowRect(&headerRect); CDC MenDC;//内存ID表
CBitmap MemMap;
MemDC.CreateCompatibleDC(&dc);
MemMap.CreateCompatibleBitmap(&dc, rect.Width(), rect.Height()); MemDC.SelectObject(&MemMap);
MemDC.FillSolidRect(&rect, RGB(228, 236, 243));
//这一句是调用默认的OnPaint(),把图形画在内存DC表上
DefWindowProc(WM_PAINT, (WPARAM)MemDC.m_hDC, (LPARAM)0);
//输出
dc.BitBlt(0, headerRect.Height(), rect.Width(), rect.Height(), &MemDC, 0,
headerRect.Height(), SRCCOPY); MemDC.DeleteDC();
MemMap.DeleteObject();
}