编辑框只能输入一个小数点

来源:互联网 发布:印度军事实力知乎 编辑:程序博客网 时间:2024/04/30 04:56

 本人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;
  }
 }
 
}

原创粉丝点击