代码是这样的,每次一按按钮的时候就会出现重影。如果是在WM_LBUTTONUP里面加一个Invalidate()的话。可以解决。但是会出现闪烁。 CRect rect(lpDrawItemStruct->rcItem);
CDC *dc=CDC::FromHandle(lpDrawItemStruct->hDC);
int state=lpDrawItemStruct->itemState;
CString s;
GetWindowText(s);
CSize size=dc->GetTextExtent(s);
Graphics graphics(lpDrawItemStruct->hDC);
Image DownImg(L"c:\\test.png");
Image NormalImg(L"c:\\test.png");
if(state&ODS_SELECTED )
graphics.DrawImage(&DownImg,1,1,DownImg.GetWidth(),DownImg.GetHeight());
else
graphics.DrawImage(&NormalImg,0,0,NormalImg.GetWidth(),NormalImg.GetHeight());
if(state&ODS_SELECTED){
rect.top+=1;
rect.right+=1;
}
rect.top+=rect.Height()/2-(size.cy)/2;
dc->SetBkMode(TRANSPARENT);
dc->DrawText(s,rect, DT_RIGHT);