这样的代码为何会导致死机??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);}
{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);}
最好能在前面加一句if(this->m_hWndMDIClient==NULL) return;
象下面这样写应该没问题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();}