在C**View::OnTimer(UINT nIDEvent) 中使用CDC* dc=GetDC();程序运行一段时间后出错
在C**View::OnTimer(UINT nIDEvent) 中使用CDC* dc=GetDC();用dc绘图实现动画显示程序运行一段时间后出错。查了一下到后来dc好象为空,是怎么回事,怎么解决,各位帮我看看,谢谢
void CRunView::OnTimer(UINT nIDEvent)
{
// TODO: Add your message handler code here and/or call default
CMHSDoc* pdoc=(CMHSDoc*)GetDocument();
CDC* dc=GetDC();
CPen *oldpen,run_pen[2],alarm_pen[2];
run_pen[0].CreatePen(0,4,RGB(0,255,0));
run_pen[1].CreatePen(0,4,RGB(0,200,0));
alarm_pen[0].CreatePen(0,4,RGB(255,0,0));
alarm_pen[1].CreatePen(0,4,RGB(192,192,192));
if(nIDEvent==1)
{
if(alarm_color==0)
alarm_color=1;
else
alarm_color=0;
for(int i=0;i<pdoc->airnum;i++)
{
if(pdoc->airlist[i]->status==2)
{
oldpen=(CPen*)dc->SelectObject(&alarm_pen[alarm_color]);
drawedge(m_picrect[i].left,m_picrect[i].top,dc);
dc->SelectObject(oldpen);
}
}
}
if(nIDEvent==2)
{
if(run_color==0)
run_color=1;
else
run_color=0;
for(int i=0;i<pdoc->airnum;i++)
{
if(pdoc->airlist[i]->status==0)
{
oldpen=(CPen*)dc->SelectObject(&run_pen[run_color]);
drawedge(m_picrect[i].left,m_picrect[i].top,dc);
dc->SelectObject(oldpen);
}
}
}
CFormView::OnTimer(nIDEvent);
}