16,550
社区成员
发帖
与我相关
我的任务
分享
void CMyListBox::OnPaint()
{
CPaintDC dc(this); // device context for painting
CRect rect;
GetClientRect(rect);
CDC MemDC;
CBitmap MemMap;
MemDC.CreateCompatibleDC(&dc);
MemMap.CreateCompatibleBitmap(
&dc,
rect.Width(),
rect.Height());
MemDC.SelectObject(&MemMap);
int Height = rect.Height();
int ItemHeight=16;
if(GetCount()>0)
ItemHeight=GetItemHeight(0);
int nCount=Height/ItemHeight;
if(Height%ItemHeight!=0)
nCount+=1;
CRect rectItem;
rectItem.left=rect.left;
rectItem.right=rect.right;
int nb=GetTopIndex();
for (int i = 0; i < nCount;i++)
{
rectItem.top=i*ItemHeight;
rectItem.bottom=rectItem.top+ItemHeight;
if((i+nb)%2==0)
MemDC.FillSolidRect(rectItem,RGB(0,205,254));
else
MemDC.FillSolidRect(rectItem,RGB(50,50,254));
}
DefWindowProc(WM_PAINT,(WPARAM)MemDC.m_hDC,(LPARAM)0);
dc.BitBlt(0,
0,
rect.Width(),
rect.Height(),
&MemDC,
0,
0,
SRCCOPY);
MemDC.DeleteDC();
MemMap.DeleteObject();
}