关于edit控件小数计算问题
有两个控件A和B,我想实现在A输入小数,即时在B中显示A+10的结果。
我在OnChange事件实现,一但使用UpdateDate()更新数据小数点就输不进去。
不用UpdateDate()可以输入小数点,但不能实时显示数据。
请问高手们有没有方法实现。
[解决办法]
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 );
}
[解决办法]
如下代码经调试通过 ,可以满足楼主所需要求。
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); }
[解决办法]
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);}