以前的程序因为没有释放DC造成资源泄露而死机.查到问题以后,
释放了DC,最近又出现新的毛病----白屏!
这回我是真的不懂了.因为这涉及了显卡等硬件问题.
来求助,希望有懂的人能给我指个方向.着急要做实验,时间不多了.
谢谢给予我帮助的人了

解决方案 »

  1.   

    定位不到问题,贴不出代码,代码太多.
    CDC *pDC=GetDC();
    CBrush greenBrush(RGB(0,255,0)),redBrush(RGB(255,0,0)),whiteBrush(RGB(2,100,30));
    CBrush* pOldBrush;
    switch(ColorNum) 
    {
    case 0:pOldBrush=pDC->SelectObject(&redBrush);
    break;
    case 1:pOldBrush=pDC->SelectObject(&greenBrush);
    break;
    case 2:pOldBrush=pDC->SelectObject(&whiteBrush);
    break;
    }
    pDC->Ellipse(&m_LightRect);
    pDC->SelectObject(pOldBrush);
    之前是因为这个pDC没有释放.现在释放了pDC.跑死的情况不出现了.
    加了句ReleaseDC(pDC);
    现在就是会白屏.我现在想知道什么原因会导致白屏呢
      

  2.   

    这段代码什么时候执行?
    通常应该响应WM_PAINT消息,在OnPaint函数中绘制,可以先调用基类的OnPaint函数,然后加入这段代码。
      

  3.   

    程序是用多线程编写的.一共有5个绘图的线程和一个保存数据的线程,还有一个显示数据的线程.
    之前死机是其中一个绘图的线程造成的资源泄露.而且之前跑的时候根本没有白屏的情况出现.
    当我找到死机的原因之后,把DC释放了.
    现在就是这个白屏的问题出现了. 程序是从串口接收数据,解算数据以后进行线程的同步.
    运行程序的时候还在运行着ccx6000 2个cpu的程序.
    不知道这会不会是造成白屏的原因.
    对这个白屏的问题没有解决的思路,希望有人能给我个思路也成啊。
    if((m_Zitai.m_hWnd)&&(m_Zitai.IsWindowVisible()))
    //m_Zitai.InvalidateRect(m_Zitai.m_DrawZiTaiRect,FALSE);
    m_Zitai.DrawZiTaiEvent.SetEvent();

    if(m_CalibrationBeganQuery)
    m_MakeCalibrationData();
    if(!m_timefreshflag)
    {
    m_MakeDrawDataForDisplay();
    DrawMainWindowEvent.SetEvent();
         DrawDepthEvent.SetEvent();

          m_DlgFeature.DrawFeatureEvent.SetEvent();
    SendAndShowDataEvent.SetEvent();

    }
    这是同步线程的代码,还有个线程是进行绘制一个小灯,只在应用程序退出后才挂起.