1.bool clistctrlex::onerasebkgnd(cdc* pdc)
//響應wm_erasebkgnd訊息
return false;
//遮蔽預設處理
//return clistctrl::onerasebkgnd(pdc);
}2. void clistctrlex::onpaint()
//響應wm_paint訊息
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();
3.虛擬列表在setitemcount重新整理時,會導致滾動條自動尋找焦點行,這樣如果很多記錄且1、2秒就刷一次,拉滾動條的時候就自動又回去了,不方便,解決這個問題的方法是:m_listctrlex.setitemcountex(vecitems.size(), lvsicf_noscroll);
防止CListCtrl閃爍的幾種方法
1.使用setredraw禁止視窗重繪,操作完成後,再恢復視窗重繪 m ctllist.setredraw false 以下為更新資料操作 恢復視窗重繪 m ctllist.setredraw true 2.使用lockwindowupdate禁止視窗重繪,操作完成後,用unlockwindowup...
防止ClistCtrl重新整理閃爍的五種方法
程式需要從資料庫某乙個活動表中,定時取資料,更新介面的列表顯示,比如有20條資料 變化 則這20資料 不停的變化,通過其他程式實現 方案 1 先在列表中查詢,後插入 比如每條記錄都有乙個唯一的編號,查詢的時候,首先查詢該編號的記錄在列表中是否存在,如果存在 則找到item後,直接更新各個列的資料,如...
防止WinForm閃爍
一 起因 相信很多在用vs開發winform的客戶端程式的碼農,都會碰到如題所示的問題。窗體在關閉或者開啟時,總是會閃爍一下。對於我這種強迫症患者,看到這個閃來閃去,心裡就不好。隨後在網上蒐羅了一下,雜七雜八,你一言我一句,試遍了所有的方法,最終確定了以下方法,我試驗後不再閃爍。二 實現 網上的 大...