首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

还是编辑框的有关问题。小弟我都弄了三天了都没搞定,唉。

2013-09-05 
还是编辑框的问题。。我都弄了三天了都没搞定,唉。。。我改变了编辑框中的数据(编辑框中的只能是浮点数),如果在

还是编辑框的问题。。我都弄了三天了都没搞定,唉。。。
我改变了编辑框中的数据(编辑框中的只能是浮点数),如果在范围内的话,就要以一定格式(保留小数点后三位)显示在编辑框中。好的,问题就来了:如果只是为编辑框定义的一个float型的成员变量m_edit1,首先我用format函数把它改成固定格式的数据,得到的类型是CString,没办法通过Setwindowtext()回显;如果增加一个CEdit类型的变量调用该函数,程序虽然能编译通过,但是每次运行的时候都会出现内存的位置不可读的错误(这个错误真的太烦了!!!!!!)

void CTest12Dlg::OnOK() //
{
// TODO: Add extra validation here
GetNextDlgTabItem(GetFocus())->SetFocus();

}

void CTest12Dlg::OnKillfocusEdit1() 
{
// TODO: Add your control notification handler code here
CString str;
if(m_edit1<=100&&m_edit1>=-100)
{
str.Format("%.3f", m_edit1);
//我要回显m_edit1这个数据该怎么添加代码呢?

}
else
{
CEdit* pEdit = (CEdit*)GetDlgItem(IDC_EDIT1);
ASSERT(pEdit->GetSafeHwnd());
pEdit->SetWindowText(_T("57.500")); // Default Value
pEdit->SetSel(0, -1);
pEdit->SetFocus();
}
}

求高手指点!! cstring MFC 编辑框
[解决办法]
“如果只是为编辑框定义的一个float型的成员变量m_edit1,首先我用format函数把它改成固定格式的数据,得到的类型是CString,没办法通过Setwindowtext()回显;”

要直接 给 float 

如:m_edit1=1.001;

通过 CString 格式化 后 ,还要 变成 float 给 m_edit1。

[解决办法]
把编辑框对应变量设为 CString 如何
扩展 CEdit 为 MyEdit,重载OnChar或 OnKeyDown ,只让输入数字型字符或小数点,
将转移焦点(LostFocus)搞个响应函数,在函数中显示三位小数的字符串

热点排行