加入两个编辑框,IDC_EDIT1和IDC_EDIT2,为别为它们两个关联dobule型变量:m_dLeft跟m_dRight,然后两击第一个编辑OnChangeEdit事件,目的是当第一个编辑框里面的数据改变时,第二框的数据内容变为第一个的1.2倍,代码如下所示:void CTrans_testDlg::OnChangeEdit1() 
{
UpdateData(TRUE);
m_dRight = m_dLeft * 1.2;
UpdateData(FALSE);
}现在碰到两个棘手的问题,请大家帮我看看,谢谢了:
1. 当想在第一个框中输0.3时,发现按下小数点"."时,本来光标在0后面,现在却突然跑到前面去了,造成无法输入数据;
2. 当我想把里面内容清空时,我用鼠标全选里面的数据,然后按下退格键(或delete键),发现总会弹出一个对话框“请输入一个数!”;这个感觉很讨厌,不知道有没有办法把它去掉;

解决方案 »

  1.   

    这种情况不适宜用UpdateData机制,因为一刷新所有的控件都刷新了。直接用SetWindowText来设置好了。
      

  2.   

    嗯,有道理,主要就是由刷新引起的;不过用SetWindowText()来设置的话需要一个字符串,不知道有什么函数将double型转成字符型好一点?PS: 我用过sprintf,发现如果用"%.5f",那么4.9会显示成4.90000;
    用gcvt时情况虽然不会在后面加0,但是会在一个数后面加小数点,如"45"会显示成"49."
      

  3.   

    直接用Format函数试下看可以不?
      

  4.   

    用CString::Fromat吗?如果用str.Format("%.10f", dRight);也会出现后面加0的情况;
      

  5.   

    先Format再TrimRight去掉尾部的0。