本人n年前写的代码,突然要用,拿出来分享下:
此函数,由编辑框的ON_EN_UPDATE消息来处理调用
void CNumberEditCtrl::UpdateEdit(CString strOffer) //过滤多余的小数点函数
{
CString buffer;//定义一个字符串缓存
GetWindowText(strOffer);
buffer = strOffer;
int Index = 0;
int flag = 0;//记数
char strArray[MAX];
ZeroMemory(strArray,sizeof(strArray));
Index = buffer.GetLength();
for (int i=0; i<Index; i++)
{
strArray[i] = buffer.GetAt(i);
if (strArray[i]=='.')
{
++flag;//如果是小数点字符,flag加1
}
if (flag > 1)//判断输入的小数点字符是否超过1个
{
SetReadOnly(TRUE);//小数点超过一个,把编辑框设置为只读。
//这里加入撤消最后输入的多余的小数点
char pStr[MAX];//定义此数组的目的是为了取消最后一次多输入的小数点字符
ZeroMemory(pStr,sizeof(pStr));
for (int j=0; j<i; j++)
{
pStr[j] = strArray[j];
}
CString strTemp(pStr);//把字符数组转换成字符串
strOffer = strTemp;
SetWindowText(strOffer);
//MessageBox(_T("您已经输入小数点了"),NULL,MB_OK);(这个对话框用来测试)
//这里处理光标的位置,是光标移动到要输入的位置,而不是开始位置
int Count = LineLength(i);//取的已经输入行编辑框字符的个数(细查看LineLength用法)
SetSel(Count,Count);//设置光标的位置,也就是光标从Count起的位置开始
SetReadOnly(FALSE);//激活编辑框为可读可写
break;
}
}
}