MFC单文档中使用对话框绘制实时曲线,该如何解决

MFC单文档中使用对话框绘制实时曲线
绘制曲线的时候,如果点击“曲线”,再最小化或关闭,曲线就不画了并且前面画的都消失了。我想让曲线一直画(对话框失去焦点时也在画),麻烦帮帮忙,谢谢!下面是我的代码:
void Dlg::OnPaint() 
{
CPaintDC dc(this); // device context for painting
CRect rect;
// TODO: Add your message handler code here

//绘制背景
//m_colBk = RGB(255,255,255);
CWnd* pWnd = GetDlgItem(IDC_CURVE);
rect.DeflateRect(1,1,1,1);
//CBrush bkBrush(m_colBk);
pWnd->GetClientRect(&rect);
CDC* pDC = pWnd->GetDC();
//pDC->FillRect(rect,&bkBrush);

//设置窗口坐标
pDC->SetMapMode(MM_ANISOTROPIC);
pDC->SetWindowExt(3000,3000);                       //设置窗口尺寸
pDC->SetViewportExt(rect.Width(),rect.Height());    //设置视口尺寸
pDC->SetWindowOrg(-100,-2800);                      //设置坐标原点
pDC->SetBkColor(RGB(10,100,100));                   //设置背景色

//绘制坐标轴
for (int j = 0 ;j < 27 ;++j)
for (int i = 0 ;i < 27 ;++i)
{
CString str;

str.Format("%d", i*100*3/100);
if(i*100 <= 2800)
{
pDC->MoveTo(i*100,-(100*j));
pDC->LineTo(100 + i*100,-(100*j));

}
pDC->TextOut(-10 + i*100,40,str);
pDC->TextOut(1500,120,"t/s");

if(j*100 >= -2800)
{
pDC->MoveTo(100*i,-(100*j));
pDC->LineTo(100*i,-(100 + 100*j));

}
str.Format("%d",i*100);
pDC->TextOut(-100,-(i*100)-40,str);
pDC->TextOut(-200,-1500,"z/mm");

}


//绘图
CAboutDlg *Dlg = new CAboutDlg;
//CAboutDlg *Dlg;

vector<double>::size_type cnt;
for(cnt = 0;cnt != 300; ++cnt)
{
CPublic::v1.push_back(cnt*100/15);//这里v1存储时间
CPublic::v2.push_back(5.564*cnt);//v2存储坐标位置
}

// pDC->MoveTo(CPublic::v1[CPublic::count],-(CPublic::v2[CPublic::count]));
pDC->Ellipse(CPublic::v1[CPublic::count] - 5,-(CPublic::v2[CPublic::count] + 5), CPublic::v1[CPublic::count] + 5 ,-(CPublic::v2[CPublic::count] - 5));
//pDC->LineTo(Dlg->m_pText_x,Dlg->m_pText_y);//为什么m_pText中值为0,连续接收?
CPublic::count++;

if(pDC->GetSafeHdc() != NULL)
dc.BitBlt(-100, -2800, rect.Width(), rect.Height(), pDC, 0, 0, SRCCOPY);

pWnd->InvalidateRect(&rect);
// Do not call CDialog::OnPaint() for painting messages
}

int Dlg::OnCreate(LPCREATESTRUCT lpCreateStruct) 
{
if (CDialog::OnCreate(lpCreateStruct) == -1)
return -1;

// TODO: Add your specialized creation code here
SetTimer(3,100,NULL);

return 0;
}

void Dlg::OnTimer(UINT nIDEvent) 
{
// TODO: Add your message handler code here and/or call default
InvalidateRect (NULL, FALSE);
CDialog::OnTimer(nIDEvent);
}


本来想要截下运行结果的,但是图片传不上来。谢谢大家!
------解决方案--------------------
内部使用定时器或者有数据变化时  发送wm_pain给对话框,强制其刷新
------解决方案--------------------
画内存DC上 需要时直接拷贝到显示设备DC萨嘎部分