CListCtrl防闪烁

来源:互联网 发布:linux查看path路径 编辑:程序博客网 时间:2024/06/10 01:35
文章来源:http://www.cnblogs.com/songsu/articles/1352981.html 

思路:
(1)绘制需要显示项的背景
(2)在内存中绘制项,然后再将内存中的项数据绘制到屏幕上

BOOL CListCtrl2::OnEraseBkgnd(CDC* pDC) {    return false;}


WM_PAINT响应代码:

void CListCtrl2::OnPaint() {    CPaintDC dc(this); // device context for painting    CRect rect;    CRect headerRect;    CDC MenDC;//内存ID表       CBitmap MemMap;    GetClientRect(&rect);        GetDlgItem(0)->GetWindowRect(&headerRect);       MenDC.CreateCompatibleDC(&dc);       MemMap.CreateCompatibleBitmap(        &dc,           rect.Width(),           rect.Height());     MenDC.SelectObject(&MemMap);    MenDC.FillSolidRect(&rect,RGB(228,236,243));       //这一句是调用默认的OnPaint(),把图形画在内存DC表上       DefWindowProc(WM_PAINT,(WPARAM)MenDC.m_hDC,(LPARAM)0);           //输出       dc.BitBlt(0,        headerRect.Height(),           rect.Width(),           rect.Height(),           &MenDC,           0,             headerRect.Height(),           SRCCOPY);       MenDC.DeleteDC();    MemMap.DeleteObject();}


原创粉丝点击