关于保存CDC状态,帮小弟我看下 为什么无效阿。

关于保存CDC状态,帮我看下 为什么无效阿。。。
CPaintDC dc(this); // device context for painting

//初始化或恢复设备描述表
if( m_iDCSave != 0)
{
dc.RestoreDC(m_iDCSave);
MessageBox(_T("恢复设备描述表"),NULL,NULL);
}

else
{
MessageBox(_T("初始化设备描述表"),NULL,NULL);
CPen pen(PS_SOLID,11,RGB(0,255,0));

dc.SelectObject(pen);

m_iDCSave = dc.SaveDC();
}

  dc.Ellipse(CRect(0,0,500,500));

运行程序后 
  弹出一个 "初始化设备描述表" 消息框, 以后每次都是 弹出"恢复设备描述表"消息框
  
  但 就第一次用绿色画笔 画出的圆,
  后面都是用黑色的画笔画出圆

------解决方案--------------------
你把MessageBox放在OnPaint里,那还不烦死你啊
------解决方案--------------------
dc.RestoreDC(m_iDCSave);
m_iDCSave=0;