mfc重绘有关问题

mfc重绘问题
我要做的是点击按钮出现坐标图,是一个对话框程序,在刚打开程序时,出现的是一个空的坐标图,然后点击按钮,想让出现一副图像,绘图都在OnPaint里面写了,为了让点击按钮出现不同于初始的图,我设置了一个变量m_draw,初始值为0,点击按钮,值设为1,读取文件,设置坐标图轴下标值,调用OnPaint,出现曲线图,想法是这样的,现在不出曲线,求大神啊,网上有一些关于重绘的,看的不是太明白。
mfc重绘有关问题

------解决方案--------------------
OnPaint不是你去调用的,是窗口刷新产生了WM_PAINT消息后去调用的,所以其实每次刷新的时候m_draw都是0。
你可以在OnOK里面读取好数据,Invalidate窗口,在OnPaint里面判断有数据就根据数据绘图。

另外更好的方式是在OnOK里面读取好数据,绘制到后台一个位图中,在OnPaint中直接将这个位图绘制出来,这样效率高,无刷新,但是如果要有放大缩小移动等需要额外处理。


------解决方案--------------------
double max_xa,max_xb;

void CAaDlg::OnInitDialog()
{
  m_draw=0;
  // 設定初值
  max_xa=-9;
  max_xb=9;


void CAaDlg::OnButton1Clicked() 
{
    CFileDialog fileopendlg(true);
    fstream file2;
    if (fileopendlg.DoModal() == IDCANCEL)// OK才執行
      return;
    filename = fileopendlg.GetPathName();
    
    m_draw=1;
    //取得 max_xa,max_xb

    file2.open(filename);
    file2>>t>>x;
        max_xa=x;
        max_xb=x;
        while(1)
        {
            if (file2.eof())
            {
                break;
            }
            file2>>t>>x;
            max_t=t;
            if (max_xa<x)
            {
                max_xa=x;
            }
            if (max_xb>x)
            {
                max_xb=x;
            }
        }
     file2.Clolsed();
    //改變m_draw及max_ma,max_mb,OnPaint時不需重複開黨讀檔,

    Invalidate();//呼叫OnPaint();
}
 
void CAaDlg::OnPaint() 
{
    double t,x,y,z;
    double max_t;
    double xstep,ystep;
    CPaintDC dc(this); 
    fstream file1;
    CPen* pPenBlue = new CPen;                                  //创建画笔对象
    pPenBlue->CreatePen(PS_SOLID, 2, RGB(0,0,255));     //蓝色画笔