本帖最后由 VisualEleven 于 2012-10-18 11:26:53 编辑

解决方案 »

  1.   

    windows下面CDC资源是有限的,5个好像,你是不是同一时间获取太多了?
      

  2.   

    你是不是GDI资源没有释放?有泄露问题?
      

  3.   

    应该是内存泄露,导致CDC建立时不够内存了。DefDCMWnd::Draw();的内容是什么?贴出来看看
      

  4.   

    总共只保存了一个缓冲CDC,我画了三个矩形,一串字符,一张CImage图片.
      

  5.   

    另外,我这个是线程1毫秒刷瓣一次下面是线程序代码:
    // 渲染线程
    void ThreadRenderDef(LPTHREAD_START_ROUTINE pThreadData)
    {
    //效验参数
    ASSERT(pThreadData!=NULL);
    DefDCMWnd * pDxWnd=(DefDCMWnd *)pThreadData;
    while(ThreadControlDef)
    {
    pDxWnd->Invalidate(FALSE);
    Sleep(1);
    }
    }
      

  6.   

       // 拷贝缓冲界面到主显示区
        CDC *pDC=GetDC();
        pDC->BitBlt(0,0,m_dWndSize.x,m_dWndSize.y,m_pMemDC,0,0,SRCCOPY);    // 交还申请DC
        ReleaseDC(pDC);
        ReleaseDC(m_pMemDC);统统放 DefDCMWnd::Draw(CDC*pDC);中