m_x0为一个edit box空间的变量映射
m_x0.Format("%lf",_x0);
GetDlgItem(IDC_x0)->SetWindowText(m_x0);之前的程序就用的这个语句就可以正确显示,但是在另一个程序里用这个语句就会在这句报错,错误显示如下:变量映射都是CString类型的,大家知道可能是哪里的问题么
void forwardDlg::OnRead() 
{
// TODO: Add your control notification handler code here
CFileDialog fileDlg(TRUE);
if (fileDlg.DoModal()==IDOK)
{
CString str=fileDlg.GetPathName();
FILE *pfile=fopen(str,"rt");
//内方位元素
fscanf(pfile,"%lf",&m_x0);
fscanf(pfile,"%lf",&m_y0);
fscanf(pfile,"%lf",&m_f);
//左片
fscanf(pfile,"%5.3lf",&m_XS1);
fscanf(pfile,"%5.3lf",&m_YS1);
fscanf(pfile,"%5.3lf",&m_ZS1);
fscanf(pfile,"%5.6lf",&m_phi1);
fscanf(pfile,"%5.6lf",&m_omega1);
fscanf(pfile,"%5.6lf",&m_kappa1);
fscanf(pfile,"%5.3lf",&m_x1);
fscanf(pfile,"%5.3lf",&m_y1);
//右片
fscanf(pfile,"%5.3lf",&m_XS2);
fscanf(pfile,"%5.3lf",&m_YS2);
fscanf(pfile,"%5.3lf",&m_ZS2);
fscanf(pfile,"%5.6lf",&m_phi2);
fscanf(pfile,"%5.6lf",&m_omega2);
fscanf(pfile,"%5.6lf",&m_kappa2);
fscanf(pfile,"%5.3lf",&m_x2);
fscanf(pfile,"%5.3lf",&m_y2);
//
m_x0.Format("%lf",_x0);
GetDlgItem(IDC_x0)->SetWindowText(m_x0);
m_y0.Format("%lf",_y0);
GetDlgItem(IDC_y0)->SetWindowText(m_y0);
m_f.Format("%lf",_f);
GetDlgItem(IDC_f)->SetWindowText(m_f);
UpdateData(false);
fclose(pfile);
}

}
MFX显示

解决方案 »

  1.   

    在为变量赋值后,用UpdateData
    或者用ReplaceSel来替换
      

  2.   

    m_x0.Format("%lf",_x0);
    GetDlgItem(IDC_x0)->SetWindowText(m_x0);没看到_x0这个变量,如果是m_x0的话,MSDN已经说明了,禁止这样使用。
      

  3.   

    _x0这个变量是在头文件里定义的,m_x0是对应的变量映射的
      

  4.   

    1)定义控件变量 m_x0 对应EDIT控件的ID为IDC_x0
    m_x0.Format("%lf",_x0); 
    UpdateData(FALSE);
    //GetDlgItem(IDC_x0)->SetWindowText(m_x0); 
    2) 不定义任何和EDIT控件相关的变量,直接使用 IDC_x0操作控件。   CString str;
       str.Format("%lf",_x0); 
       GetDlgItem(IDC_x0)->SetWindowText(m_x0);