我在OnMouseMove中加入以下代码,在Windows98下为什么会出现,移动一会儿鼠标会出现内存资源不足的提示??难道是dc没有释放吗?
CClientDC dc(this);
CString str;
str = "                          ";
dc.SetTextColor(RGB(255,0,0));
dc.TextOut(100,0,str);CPen pen(PS_SOLID,1,RGB(255,255,255)),*pOldPen;
pOldPen = dc.SelectObject(&pen);
dc.MoveTo(m_lastPoint.x,m_lastPoint.y-5);
dc.LineTo(m_lastPoint.x,m_lastPoint.y+5);
dc.SelectOBject(pOldPen);

解决方案 »

  1.   

    Above code is not wrong!
      

  2.   

    看看m_lastPoint.x,_lastPoint.y的赋值数组!可能数组发生内存泄漏
      

  3.   

    上面的代码中,pOldPen = dc.SelectObject(&pen);是选入画笔,
    然后dc.SelectOBject(pOldPen);是画笔被选出,
    之后要删除该画笔吧?
      

  4.   

    CClientDC dc(this);
    CString str;
    POINT m_lastPoint;str = "       haha                   ";
    dc.SetTextColor(RGB(255,0,0));
    dc.TextOut(100,0,str);

    CPen pen(PS_SOLID,1,RGB(255,255,255)),*pOldPen;
    pOldPen = dc.SelectObject(&pen);
    dc.MoveTo(m_lastPoint.x,m_lastPoint.y-5);
    dc.LineTo(m_lastPoint.x,m_lastPoint.y+5);
    dc.SelectObject(pOldPen);DeleteObject(dc);
    这样应该可以了吧?
      

  5.   

    是不是要release掉dc对象啊?
    我知道ondraw()里面会自动释放的,不清楚onmouseover
      

  6.   

    一篇好文章可以解决你的问题:
    http://cpc.3322.net/technology/vc117.htm
      

  7.   

    首先:感谢大家的关注!!
    画笔对象也是在堆栈中申请的,需要释放吗?
    困扰我的是CClientDC的对象和CPen对象是在堆栈中申请的,怎么会出现内存泄漏呢?