自绘标题栏及最大化最小化关闭按钮,点关闭出现运行时异常

自绘标题栏及最大化最小化关闭按钮,点关闭出现运行时错误
单文档结构的程序,在OnNcPaint中自绘标题栏及最大化最小化关闭按钮,点关闭,窗口关闭后立刻出现运行时错误,最小化最大化正常。关键代码如下
void CMainFrame::OnNcPaint()
{
// TODO: 在此处添加消息处理程序代码
// 不为绘图消息调用 CFrameWndEx::OnNcPaint()



CRect rcWnd;
GetWindowRect(&rcWnd);
rcWnd.OffsetRect(-rcWnd.TopLeft());
int cxBorder = GetSystemMetrics(SM_CXFRAME);
int cyBorder = GetSystemMetrics(SM_CYFRAME);
int cyButton = GetSystemMetrics(SM_CYSIZE);
int cxButton = GetSystemMetrics(SM_CXSIZE);
m_rcCaption = rcWnd;
m_rcCaption.bottom = m_rcCaption.top + cyBorder + cyButton + 2;

CPoint p1,p2;
p1.SetPoint(rcWnd.right - cxBorder, rcWnd.top + 18);
p2.SetPoint(rcWnd.right - cxBorder - 45, rcWnd.top);
m_rcClose.SetRect(p2, p1);
p1.x -= 45;
p2.x -= 34;
m_rcMax.SetRect(p2, p1);
p1.x -= 34;
p2.x -= 34;
m_rcMin.SetRect(p2, p1);

CDC *dc = GetWindowDC();
CBrush br(RGB(0x3a, 0x3a, 0x3a));
CBrush *pOldBrush = dc->SelectObject(&br);
dc->Rectangle(&m_rcCaption);
m_ilClose.Draw(dc, 0, CPoint(m_rcClose.left, m_rcClose.top), ILD_NORMAL);
m_ilMax.Draw(dc, 0, CPoint(m_rcMax.left, m_rcClose.top), ILD_NORMAL);
m_ilMin.Draw(dc, 0, CPoint(m_rcMin.left, m_rcClose.top), ILD_NORMAL);
dc->SelectObject(pOldBrush);
ReleaseDC(dc);


}

void CMainFrame::OnActivate(UINT nState, CWnd* pWndOther, BOOL bMinimized)
{
CFrameWndEx::OnActivate(nState, pWndOther, bMinimized);

// TODO: 在此处添加消息处理程序代码
SendMessage(WM_NCPAINT);
}

LRESULT CMainFrame::OnNcHitTest(CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
CRect rcWnd;
GetWindowRect(&rcWnd);
point.Offset(-rcWnd.TopLeft());
if (m_rcMax.PtInRect(point) || m_rcMin.PtInRect(point))
{
return HTSYSMENU;
}
if (m_rcClose.PtInRect(point))
{
return HTCLOSE;
}
return CFrameWndEx::OnNcHitTest(point);
}

void CMainFrame::OnNcLButtonUp(UINT nHitTest, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
CRect rcWnd;
GetWindowRect(&rcWnd);
point.Offset(-rcWnd.TopLeft());
if (m_rcClose.PtInRect(point))
{
SendMessage(WM_CLOSE);
}
if (m_rcMax.PtInRect(point))
{
if (IsZoomed())
{
SendMessage(WM_SYSCOMMAND, SC_RESTORE, MAKELPARAM(point.y, point.x));
}
else if(!IsIconic())
{
SendMessage(WM_SYSCOMMAND, SC_MAXIMIZE, MAKELPARAM(point.y, point.x));
}

}
if (m_rcMin.PtInRect(point))
{
SendMessage(WM_SYSCOMMAND, SC_MINIMIZE, MAKELPARAM(point.y, point.x));
}
CFrameWndEx::OnNcLButtonUp(nHitTest, point);
}

CRect m_rcClose CRect m_rcMax; CRect m_rcMin;
CImageList m_ilClose, m_ilMax, m_ilRecover, m_ilMin;
这几个都是框架窗口的成员,请大神帮我找出错误,小弟不胜感激!
mfc自绘, 标题栏

------解决方案--------------------
窗口关闭后立刻出现运行时错误

不可以断点?