把m_tempR=0;去掉,不执行SetTimer,KillTimer,则正常
请指点,谢谢CRealTimeView::CRealTimeView()
{
       m_tempR=0; //m_tempR是int型成员变量
}
void CRealTimeView::OnTimer(UINT nIDEvent) 
{
m_tempR+=10;
if(!nIDEvent==0)
{
CDC *pDC=GetDC();
 
CPen pen(PS_SOLID,2,RGB(255,255,0));
CPen *oldpen=pDC->SelectObject(&pen);
pDC->MoveTo(0,0);
pDC->LineTo(m_tempR,m_tempR);
pDC->SelectObject(&oldpen);
ReleaseDC(pDC);
}
CView::OnTimer(nIDEvent);
}void CRealTimeView::OnInitialUpdate() 
{
CView::OnInitialUpdate(); 
SetTimer(1,2000,NULL);
 }
CRealTimeView::~CRealTimeView()
{
KillTimer(1);
}

解决方案 »

  1.   

    SetTimer
    CString
    Com error
    un delete array
    都占用系统资源,少用为好。。
      

  2.   

    不应该在析够函数中撤销timer。
      

  3.   

    KillTimer(1);应该放在OnDestroy中。CRealTimeView::~CRealTimeView()
    这个时候已经没有窗口了。
      

  4.   

    上面意见都正确。比较倾向zj_zyq(飞鸽)的意见.ClassWizard,class name下选RealTimeView,在
    message标签下选WM_DESTROY,再Add function,OK,在该函数中添加代码KillTimer(1);
      

  5.   

    but when I add the KillTimer(1) in the OnFinalRelease() 
    ,It run ok now, could I make it like this?
    void CRealTimeView::OnFinalRelease() 
    {
    KillTimer(1);
    CView::OnFinalRelease();
    }
      

  6.   

    KillTimer(1); 没见过放在西构函数里面用的
      

  7.   

    不能在析构函数中调用
    KillTimer();
    原因:_AFXWIN_INLINE BOOL CWnd::KillTimer(int nIDEvent)
    { ASSERT(::IsWindow(m_hWnd)); return ::KillTimer(m_hWnd, nIDEvent); }在析构函数中m_hWn已经被关闭