一、有两个编辑框,在第一个输入数据后,结束输入后把焦点移到另外一个编辑框的(一般习惯是按下enter键,但是还有用鼠标点击其他地方让原来的编辑框失去焦点啊)同时要对原来编辑框中的数据要做出判断(比如不能超过一定范围,只能是数字什么的)的函数是什么?
二、我添加一个float型的编辑框的成员变量,在编辑框中输入非法字符字母什么的,按下enter键它就弹出一个对话框报错(请键入一个数),怎么重载那个消息响应函数把它的报错改成(请输入0~99之间的数或者其他)呢?
三、(接二)如果能实时响应最好,按下字母就会提示要输入数字(在状态栏里面提示),用什么函数去做呢?
各位哥哥姐姐弟弟妹妹帮帮忙啦,嘿嘿!VC对话框编辑框
二、我添加一个float型的编辑框的成员变量,在编辑框中输入非法字符字母什么的,按下enter键它就弹出一个对话框报错(请键入一个数),怎么重载那个消息响应函数把它的报错改成(请输入0~99之间的数或者其他)呢?
三、(接二)如果能实时响应最好,按下字母就会提示要输入数字(在状态栏里面提示),用什么函数去做呢?
各位哥哥姐姐弟弟妹妹帮帮忙啦,嘿嘿!VC对话框编辑框
3. EN_UPDATE、EN_CHANGE
void CTest1Dlg::OnOK() //响应enter键改变编辑框焦点
{
GetNextDlgTabItem(GetFocus())->SetFocus();
}void CTest1Dlg::OnKillfocusEdit1()
{
// TODO: Add your control notification handler code here
CString str;
m_edit1.GetWindowText(str);
float n = atof(str);
if(n<=100){
str.Empty();
str.Format("%.3f", n);//保留三位小数格式输出到编辑框
m_edit1.SetWindowText(str);
}
else
{
MessageBox("ERROR!");
GetDlgItem(IDC_EDIT1)->SetFocus();
}
}
在第二个函数里面我能大概判断编辑框中的数的范围(m_edit1是CEdit类型的成员变量),怎么做才能判断非法字符呢?比如程序运行的时候输入字母什么的,失去焦点后编辑框默认返回0.000,也不会提示错误。如果能够返回编辑框中的预设值,并且预设值呈全选状态最好。请问还要怎么改代码呢?
输入非法值以后,直接清空非法值,设置为default值
CEdit* pEdit = (CEdit*)GetDlgItem(IDC_EDIT1);
ASSERT(pEdit->GetSafeHwnd());
pEdit->SetWindowText(_T("XXXXX")); // Default Value
pEdit->SetSel(0, -1);
pEdit->SetFocus();