你说"然后在其他函数里面使用pdc 做图"
这个函数在什么地方被调用呢?

解决方案 »

  1.   

    在使用pdc时,这个全局变量是否没被初始化呢?就是说pdc=pDC是否在调用之后。
      

  2.   

    在OnTimer  但是在OnTimer相应的时候应该已经赋了值了
      

  3.   

    比如这样:
    CDC * pdc;
    void CTest::m_Draw(CDC *pDC)
    {
        pdc=pDC;
        SetTimer(1,5000,NULL);
    }
    void Ctime::OnTimer(UINT nIDEvent) 
    {
    // TODO: Add your message handler code here and/or call default
    pdc->MoveTo(1,1);
             pdc->LineTo(200,300);
    CWnd::OnTimer(nIDEvent);
    }
      

  4.   

    void Ctime::OnTimer(UINT nIDEvent) 
    改成 
    void CTest::OnTimer(UINT nIDEvent) 
      

  5.   

    OnDraw(CDC *pDC)在整个运行过程是要被执行很多次的。
      

  6.   

    你想在定时器中画图,这种做法好象不符合windows 下的做法,它一般提倡将做图的语句放在OnDraw中,在定时器中更新。
      

  7.   

    就是说 只能在每次时间到时  通过Invalidate() 刷新 再重新OnDraw呗!
      

  8.   

    是什么问题被中断了?说出来有利于大家分析,否则只能猜http://hi.baidu.com/yulingkong
      

  9.   

    是不是没有初始化哦
    最好是在初始化函数里给一个初始值
    在用之前 判断一下 是否为空。。
    if(pdc ==NULL) 
      return;
      

  10.   

    我试了一下 没有空 会向下执行 进入MoveTo函数体内
    CPoint CDC::MoveTo(int x, int y)
    {
    ASSERT(m_hDC != NULL);
    CPoint point; if (m_hDC != m_hAttribDC)
    VERIFY(::MoveToEx(m_hDC, x, y, &point));///在此处停了下来
    if (m_hAttribDC != NULL)
    VERIFY(::MoveToEx(m_hAttribDC, x, y, &point));
    return point;
    }
      

  11.   

    难道在OnTimer函数里就不能作图了么?
      

  12.   

    可以,但是不要保留DC或DC指针,每次作图时获得和释放DC,这时不要考虑效率问题。