这样的代码为何会导致死机??void CMainFrame::OnPaint() 
{CRect rc;
CDC dc;dc.m_hDC=::GetDC(this->m_hWndMDIClient);CBrush br(RGB(120,200,120)); dc.SelectObject(&br);GetClientRect(&rc);dc.PatBlt(rc.left,rc.top,rc.Width(),rc.Height(),PATCOPY);ReleaseDC(&dc);}

解决方案 »

  1.   

    可能这一句有问题:dc.m_hDC=::GetDC(this->m_hWndMDIClient);
    最好能在前面加一句if(this->m_hWndMDIClient==NULL) return;
      

  2.   

    不知道为什么为死机,也不敢试:(
    象下面这样写应该没问题void CMainFrame::OnPaint() 
    {CRect rc;
    CDC dc;dc.Attach(::GetDC(this->m_hWndMDIClient));CBrush br(RGB(120,200,120)); CBrush *pOldBrush = (CBrush*)dc.SelectObject(&br);GetClientRect(&rc);dc.PatBlt(rc.left,rc.top,rc.Width(),rc.Height(),PATCOPY);dc.SelectObject(pOldBrush);ReleaseDC(&dc);
    dc.Detach();}