新手请教 对话框为什么输不出结果
下面是我的程序 前面的这个调用函数是用来读取txt里的数据的 下面是按钮里的计算程序 程序本身已经在win32运行成功了 现在MFC也编译成功了 但是按钮BUTTON_SOME按下去后 编辑框EDIT_OUT却一点反应也没有 输不出结果 我在想是不是读取函数错了 听说直接用一个cfile就可以了 但是对MFC很陌生 还是不懂 希望好心人帮忙一下
void ReadText(char filename[],double data[][ROW]) //读取数据的函数
{
int i,j;
char buf_num[30]; //存储每个数字的字符
char *p;
char c;
ifstream fin;
fin.open(filename,ios::binary|ios::in);
for(i=0;i<LINE;i++)
{
for(j=0;j<ROW;j++)
{
p=buf_num;
while(1)
{
//找到当前要取的数字开头或行末尾
fin.read(&c,1);
if(c=='-' || c=='.' || (c>='0' && c<='9'))
break;
}
//将当前数字的字符串复制到buf_num中
while(c=='-' || c=='.' || (c>='0' && c<='9'))
{
*p=c;
p++;
fin.read(&c,1);
}
*p='\0';
data[i][j]=atof(buf_num);
cout<<setprecision(15)<<'\t';
p=buf_num;
}
cout<<endl;
}
fin.close();
}
void CJianceDlg::OnButtonSome() //按钮事件
{
int n,i,m,c,k,q,o,v,u;
complex S2,S1,S,S0,S10,X[64],X1[64],xn,X0,a,b,z,w;
double f,sto;
complex TT[64][64],MT[64][64],MS[64][64];
/*------------调用读取函数-------------*/
char filename[20];
double x[64];
double xnn;
double data[LINE][ROW];
UpdateData(0);
ReadText("data3.txt",data);
for(o=0;o<13;o++)
{
for(u=0;u<64;u++)
{
x[u]=data[o][u];
}
double x1[64]={378.719486461068,376.8193347340691,371.15486129825143,361.78330276284385,348.79848218940725,332.32994642114653,341.01136947787404,355.7686494784199,366.9598355166345,374.47763103667546,378.2501836350581,378.24208318585227,374.4549258916443,366.92745296939813,355.73527811870724,340.9902178976729,332.3383330592581,348.8277162663549,361.817526496756,371.18324245791416,376.83513871006403,378.7194863082151,376.8193347038166,371.15486129691215,361.78330276714735,348.7984821938859,332.32994642474927,341.0113694806064,355.7686494804675,366.9598355181114,374.4776310377464,378.25018363583627,378.242083186418,374.4549258920556,366.92745296969724,355.735278118925,340.9902178978311,332.3383330593718,348.8277162664352,361.8175264968433,371.1832424579791,376.83513871011166,378.7194863082499,376.81933470384195,371.1548612969307,361.7833027671609,348.7984821938958,332.3299464247567,341.0113694808183,355.7686494805064,366.9598355181254,374.477631037753,378.25018363584024,378.2420831864207,374.4549258920577,366.9274529696991,355.73527811892643,340.9902178978326,332.3383330593719,348.8277162665365,361.81752649686155,371.1832424579887,376.8351387101175,378.7194863082538};
for(i=0;i<64;i++) //第一个循环 i
{
for(n=0;n<64;n++) //第二个循环 n
{
for(q=0;q<n+1;q++)
{
X[0]=0;X1[0]=0;
for(k=0;k<64;k++)
{
a.re=0;
a.im=0.098174*q*k; //计算X[q]
b=a;
b=exp(a);
X[q]=X[q]+x[k]*b;
X1[q]=X1[q]+x1[k]*b;
}
X[q]=1.0/64*X[q];
X1[q]=1.0/64*X1[q];
}
if(n==0)
{
complex s,s1;
s=0;s1=0;
for(int t=0;t<64;t++)
{
s=s+X[t];
s1=s1+X1[t];
}
S=s/64;
S1=s1/64;
}
else
{
S=0;S1=0;
for(m=0;m<64;m++) //第三个循环 m
{
c=(m+n)%64;
f=-19.73920879*m*m/(n*n);
w=exp(f);
z.re=0;
z.im=0.09817477*m*i;
S2=exp(z);
S=S+X[q]*w*S2;
S1=S1+X1[q]*w*S2;
}
}
MS[i][n]=S;
MT[i][n]=S1;
}
}
complex st,stt,sts,stm;
stt=0;
sts=0;
stm=0;
for(int e=0;e<64;e++)
{
for(int r=0;r<64;r++)
{
sts+=MT[e][r]*MS[e][r];
stt+=MT[e][r]*MT[e][r];
stm+=MS[e][r]*MS[e][r];
}
}
complex st1,st3,st4,st5;
double st2,st0,st6;
st=sts/sqrt(stt*stm);
st1=sqrt(st.re*st.re+st.im*st.im);
st2=st1.re;
if(sto<st2)
{
sto=st2;
v=o;
}
CString str=st2;//计算结果
GetDlgItem(IDC_EDIT_OUT)->SetWindowText(str);
UpdateData(0);
}
getch();
}
另外 如果x1[64]改成要从编辑框EDIT2中输入的话前面要不要做很大的改动