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

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值