有两个控件A和B,我想实现在A输入小数,即时在B中显示A+10的结果。
我在OnChange事件实现,一但使用UpdateDate()更新数据小数点就输不进去。
不用UpdateDate()可以输入小数点,但不能实时显示数据。
请问高手们有没有方法实现。

解决方案 »

  1.   

    void CLLDlg::OnEnChangeEdit1()
    {       
     if(A<=100)
    {
    UpdateData(TRUE);
    B= A + 10;
    UpdateData(FALSE);
    }
    }
      

  2.   

    void CLLDlg::OnEnChangeEdit1()
    {   
     if(A<=100)
     {
     UpdateData(TRUE);
     B= A + 10;
     UpdateData(FALSE);//改为B.UpdateData(FALSE);指定刷新数据的窗口
     }
    }
      

  3.   

    UpdateData(FALSE);//改为B.UpdateData(FALSE);
    不是不行,结果显示不了
      

  4.   

    void CtestbDlg::OnChangeEdit2()
    {
    // TODO:  如果该控件是 RICHEDIT 控件,它将不
    // 发送此通知,除非重写 CDialogEx::OnInitDialog()
    // 函数并调用 CRichEditCtrl().SetEventMask(),
    // 同时将 ENM_CHANGE 标志“或”运算到掩码中。 // TODO:  在此添加控件通知处理程序代码
    CString STemp;
    UpdateData( TRUE); STemp.Format ( _T("%.2f"),m_fEdit2 + (float)10.0); m_CtrlEdit3.SetWindowTextW ( STemp );
    }
      

  5.   

    楼主可以把控件A和B定义成CEdit类型,然后自己来操作。a.SetwindowText();b.SetwindowText();可能会更方便。不要把控件A和B定义成CString类型
      

  6.   

    如下代码经调试通过 ,可以满足楼主所需要求。
    void CDlgDlg::OnChangeEdit1() 
    {
    // TODO: If this is a RICHEDIT control, the control will not
    // send this notification unless you override the CDialog::OnInitDialog()
    // function and call CRichEditCtrl().SetEventMask()
    // with the ENM_CHANGE flag ORed into the mask.

    // TODO: Add your control notification handler code here
    UpdateData(   TRUE   ); 
    double   iMyTest; 
    double   iResult; 
    iMyTest   =   atof(m_MyTest);//m_MyTest为Edit1的关联变量CString   
    iResult   =   iMyTest*2;
    m_strChang.Format("%.2f ",iResult);//m_strChang为出去结果的Edit2的关联变量CString   
        UpdateData(FALSE); 
    }
      

  7.   

    void CXXXDlg::OnChangeEdit1() 
    {
    CString str(_T(""));
    GetDlgItemText(IDC_EDIT1, str);
    double nVal = _tcstod(str, NULL) + 10;
    str.Format(_T("%lf"), nVal);
    SetDlgItemText(IDC_EDIT2, str);
    }