我的程序执行顺序:输入参数a,b,c后点确认键,就开始画图但我如果想换个参数重画,就必须先关了程序再开而我希望的是每按一次确认键就按参数画一遍我该怎么改?谢谢指教!void CDialog1::OnButton1()
{ double t = 0.0; double a,b,c,k;
this->UpdateData(); a = this->m_d;
b = this->m_e;
c = this->m_f; CPaintDC dc(this); dc.SetMapMode(MM_ANISOTROPIC);
dc.SetWindowOrg(-32000,32000);
dc.SetWindowExt(int(2000*32.000),-32000*2); CRect rc;
GetClientRect(rc);
dc.SetViewportOrg(0,70);
dc.SetViewportExt(rc.Width(),rc.Height()-70); CPen pen(PS_SOLID,1,RGB(0,0,255)),*pOldPen;
pOldPen = dc.SelectObject(&pen); dc.BeginPath();
dc.SelectObject(&pen);
dc.MoveTo(-32000,0);
dc.LineTo(32000,0);
dc.MoveTo(0,-32000);
dc.LineTo(0,32000);
dc.MoveTo(-32000,-32000);
dc.LineTo(32000,32000);
dc.MoveTo(-32000,int(FunMove(-32.0,k,a,b,c)*1000));
for( t = -32.000+0.02;t<= 32.000;t+=0.01)
{
double y ;
y = int(FunMove(t,k,a,b,c)*1000);
dc.LineTo(int(1000*t),y);
}
dc.EndPath();
dc.StrokePath(); CDialog::OnPaint();}
{ double t = 0.0; double a,b,c,k;
this->UpdateData(); a = this->m_d;
b = this->m_e;
c = this->m_f; CPaintDC dc(this); dc.SetMapMode(MM_ANISOTROPIC);
dc.SetWindowOrg(-32000,32000);
dc.SetWindowExt(int(2000*32.000),-32000*2); CRect rc;
GetClientRect(rc);
dc.SetViewportOrg(0,70);
dc.SetViewportExt(rc.Width(),rc.Height()-70); CPen pen(PS_SOLID,1,RGB(0,0,255)),*pOldPen;
pOldPen = dc.SelectObject(&pen); dc.BeginPath();
dc.SelectObject(&pen);
dc.MoveTo(-32000,0);
dc.LineTo(32000,0);
dc.MoveTo(0,-32000);
dc.LineTo(0,32000);
dc.MoveTo(-32000,-32000);
dc.LineTo(32000,32000);
dc.MoveTo(-32000,int(FunMove(-32.0,k,a,b,c)*1000));
for( t = -32.000+0.02;t<= 32.000;t+=0.01)
{
double y ;
y = int(FunMove(t,k,a,b,c)*1000);
dc.LineTo(int(1000*t),y);
}
dc.EndPath();
dc.StrokePath(); CDialog::OnPaint();}
dc.SelectObject(pOldPen);
有没有其他问题,还没仔细看
如果想换个参数重画,只要改变三个编辑框中a,b,c的值。
int nSave = dc.SaveDC()每次画图之前先savedc以下
CPaintDC dc(this);
int nSave = dc.SaveDC()
最后再调用RestoreDC
dc.RestoreDC(nSave);