CScrollView 滚动花屏
void CBusListView::OnPaint(void)
{
CPaintDC dc(this);
//OnPrepareDC(&dc);
//OnDraw(&dc);
// CPoint ptScroll = GetScrollPosition();
UINT iBus=1;
CFont* oldFont=dc.SelectObject (&m_BusFont);
switch(nShowType)
{
case 1:
{
for(BusInfoIt BusIt=theApp.m_BusInfoList.begin();BusIt!=theApp.m_BusInfoList.end();BusIt++)//for (int iBus=1;iBus<50;iBus++)
{
BOOL b_free=TRUE;
POINT pnt;
for (ContractListInfoIt ContractIt=theApp.m_ContractListInfo.begin();ContractIt!=theApp.m_ContractListInfo.end();ContractIt++)
{
if (ContractIt->second.m_BusOnTheLine.find(BusIt->second.m_BusOwnerCode)!=ContractIt->second.m_BusOnTheLine.end())
{
b_free=FALSE;
}
}
if (iBus%2==1)
pnt.x=10;
else
pnt.x=40;
pnt.y=20*((iBus-1)/2);
if (b_free)
{
if(BusIt->second.m_Remarks.CompareNoCase(_T("禁用"))==0)//禁用采用红球+黑字
{
m_BusImageList.Draw (&dc, 3, pnt, ILD_TRANSPARENT);
dc.SetTextColor(RGB(0,0,0));
}
else//否则为篮球+白字
{
m_BusImageList.Draw (&dc, 0, pnt, ILD_TRANSPARENT);
dc.SetTextColor(RGB(255,255,255));
}
dc.SetBkMode(TRANSPARENT);
dc.TextOut(pnt.x,pnt.y,BusIt->second.m_BusOwnerCode);
}
else
{
m_BusImageList.Draw (&dc, 2, pnt, ILD_TRANSPARENT);
dc.SetTextColor(RGB(0,0,0));
dc.SetBkMode(TRANSPARENT);
dc.TextOut(pnt.x,pnt.y,BusIt->second.m_BusOwnerCode);
}
iBus++;
}
}
break;
case 2:
{
for( ;iBus<theApp.m_LoadingBusOrder.size();iBus++)
{
POINT pnt;
if (iBus%2==1)
pnt.x=10;
else
pnt.x=40;
pnt.y=20*((iBus-1)/2);
m_BusImageList.Draw (&dc, 0, pnt, ILD_TRANSPARENT);
dc.SetTextColor(RGB(255,255,255));
dc.SetBkMode(TRANSPARENT);
dc.TextOut(pnt.x,pnt.y,theApp.m_LoadingBusOrder[iBus]);
}
}
break;
default:
{
POINT pnt;
pnt.x = 10;
pnt.y = 10;
m_BusImageList.Draw (&dc, 0, pnt, ILD_TRANSPARENT);
pnt.y = 30;
m_BusImageList.Draw (&dc, 1, pnt, ILD_TRANSPARENT);
pnt.y = 50;
m_BusImageList.Draw (&dc, 2, pnt, ILD_TRANSPARENT);
pnt.y = 70;
m_BusImageList.Draw (&dc, 3, pnt, ILD_TRANSPARENT);
CPen pen;
pen.CreatePen(PS_SOLID, 1, RGB(255,0,0));
CPen *old=dc.SelectObject(&pen);
CBrush br, *oldBr;
br.CreateSolidBrush (RGB(255,0,0));
oldBr = dc.SelectObject (&br);
dc.SetBkMode(TRANSPARENT);
dc.TextOut(10,50,"23");
}
break;
}
int yLine = 30;
CSize szTotal;
szTotal.cx = m_szClient.cx;
szTotal.cy = 20*iBus/2+1;
if (szTotal.cy > m_szClient.cy)
szTotal.cx -= GetSystemMetrics(SM_CXVSCROLL);
SetScrollSizes(MM_TEXT, szTotal);
dc.SelectObject(oldFont);
}
如果处理滚动刷新,以及出现的花屏!!请教高手!!