问题如上,小女之是新手,成长过程中,请大家多多照顾!
盼复。

解决方案 »

  1.   

    不可能吧,look一下代码~~~
      

  2.   

    好的,这里先多谢了 :)m_Progress.SetRange(0,1100);
    demo.Sech(Dlg2.m_E0,Dlg2.m_Duration,Dlg2.m_Chrip);
        m_Progress.SetPos(5);
    demo.saveI("I0.dat");
    // demo.ExpSin(12.2e-3,32.0e-3);//t1=12.2fs
    demo.nSavProfile_1("pulse0.dat");
    demo.saveFreq_1("Freq0.dat");
    m_Progress.SetPos(20);
    demo.propag(&m_Progress);//propag中有个循环,1000步的,propag()代码附后
    m_Progress.SetPos(1050);
    demo.nSavProfile_1("pulse1.dat");
    demo.nSavProfile_n("Pulsen.dat");
    // demo.SavImax("Imax1.dat");
    // demo.DDy();
    // demo.saveI("I1.dat");
    m_Progress.SetPos(1080);
    demo.saveFreq_n("FreqN.dat");
    demo.saveFreq_1("Freq1.dat");
        m_Progress.SetPos(1100);
    // demo.saveF("F1.dat");
    //////////propag()代码:
    void Soliton1d::propag(CProgressCtrl* m_Progress)
    {    int kk=0,l=PropSteps/NumFig;
    long i,j,m;
    double Imax0;
    //////////////////////////////////////////////////////////////////////
    char *filename="pop3.dat";
    ofstream outfile (filename);
    if (!outfile ) { 
    cout << "Can not open "<<filename<<" for output !\n";
    return;
    }
    //////////////////////////////////////////////////////////////////////
    m_Progress->SetPos(30);
    for (j=0; j<nn ; j++){
    PeakI[j]=data[j+j]*data[j+j]+data[j+j+1]*data[j+j+1];
    }
    datc[0]=dPeakValue(PeakI,nn);
    Imax0=datc[0];
    datc[0]/=Imax0;    m_Progress->SetPos(40);
    for(i=0;i<PropSteps;i++){
    m_Progress->StepIt();//这里的ProSteps为1000
    fft1dim(1);
    linear(0.5);
    fft1dim(-1);
    nonlinear();
    fft1dim(1);
    linear(0.5);
    fft1dim(-1); for(j=0;j<nn;j++){
    PeakI[j]=data[j+j]*data[j+j]+data[j+j+1]*data[j+j+1];
    }
    datc[i+1]=dPeakValue(PeakI,nn);
    datc[i+1]/=Imax0;

    /////////////////////////////////////////////////////////////////////
    ////输出剖面图
    // if((i==0||(i+1)%l==0) && kk<NumFig){//可输出初始图,但没有最后一步的剖面图
    if((i+1)%l==0 && kk<NumFig+1){//可输出最后一步的剖面图,但没有初始图
    for(int jj=0;jj<nn;jj++){
    //output N temporal profiles
    dprofile[kk*nn+jj]=data[jj+jj]*data[jj+jj]+data[jj+jj+1]*data[jj+jj+1];
    //output N spectrums
    fft1dim(1);
    if(jj<halfnn)
    m=jj+halfnn;
    else
    m=jj-halfnn;
    dprofileFreq[kk*nn+jj]=data[m+m]*data[m+m]+data[m+m+1]*data[m+m+1];
    fft1dim(-1);
    }
    kk++;
    }
    if(i%10==0)
    outfile << i*PropDelta  <<" "<< data[halfnn/2] <<" "<< data[halfnn/2+1]<<endl;
    cout<<i<<endl;
    }
    m_Progress->SetPos(1040);
    }
      

  3.   

    不知道这样直接用SetPos()可不可以?
    问题好像就在propag()函数里,但找不出!
      

  4.   

    回楼上:您是说我在propag中用StepIt()不合适么? 我试试看  :)谢了!
      

  5.   

    多谢xiaoshao_0_0,CloudWater(秋云开水),afei2002(afei) , chris_crow(风之子) !我用m_Progress->SetPos(i+40);代替了原来的m_Progress->StepIt();循环就消失了。 多谢xiaoshao_0_0的指点!请问,我怎么给你分? :)(第一次,请勿见笑)
      

  6.   

    xiaoshao_0_0我给了分,不知是否收到, 再次感谢各位!