| 发表于:2007-06-12 18:04:11 楼主 |
我自定义了一个cmyheaderctrl,子类化它为cmylistctrl的表头控件 cmyheaderctrl的外观是通过贴图实现的.画好后发现点击listctrl和拖动边框时会闪烁,双缓冲都没效果 我给出onpaint的简化版本给看看 onerasebkgnd(){return true;} onpaint() { cpaintdc dc(this); crect rcclient,rcitem,rect; getclientrect(&rcclient); int nwidth,nheight; nwidth=rcclient.width(); nheight=rcclient.height(); cdc* pdc=getwindowdc(); cdc memdc; cbitmap membitmap; memdc.createcompatibledc(null); membitmap.createcompatiblebitmap(pdc,nwidth,nheight); cbitmap *poldbit=memdc.selectobject(&membitmap); memdc.fillsolidrect(0,0,nwidth,nheight,rgb(255,255,255)); bitmap bmspan; m_bmpspan.getbitmap(&bmspan); for(int v=0; v <rcclient.width(); v++) { rect.left=rcclient.left+2+(v*bmspan.bmwidth); rect.top=0; rect.right=rect.left+bmspan.bmwidth; rect.bottom=rect.top+rcclient.height()+3; drawstretch(memdc,&rect,(hbitmap)m_bmpspan); } pdc-> bitblt(0,0,nwidth,nheight,&memdc,0,0,srccopy); membitmap.deleteobject(); memdc.deletedc(); cheaderctrl::onpaint(); } |
|
|
|
|