CSpinButtonCtrl在buddy CEdit中放置不需要的千位分隔符期间

时间:2016-04-20 08:57:36

标签: c++ mfc

我正在使用 CSpinButtonCtrl 来修改好友CEdit的整数值。很好的是,一旦值高于1.000, CSpinButtonCtrl 会在数字中放置数千个分隔符句点。问题是MFC的直接数据交换仅读取千位分隔符之前的数字,以便 CEdit 中的1.000在交换值的int中变为1。

现在我只是检查 CEdit 一千个分隔符时间段并且每次更改时都使用逗号,然后可能会删除它:

   //get current line from CEdit
   CString line;
   CEdit* pEdit = (CEdit*)GetDlgItem(nId);
   pEdit->GetWindowText(line);

   //replace periods and commas with nothing
   line.Replace(".", "");
   line.Replace(",", "");

   //Write the CString back to the CEdit
   pEdit->SetWindowText(line);

   //Set the cursor to the end of the line again
   pEdit->SetFocus();
   pEdit->SetSel(-1);

但是,当用户输入的数字不是 CEdit 的结尾时,这显然有点hacky并且会给出错误的行为。 CEdit 已经设置为“仅数字”,但是 CSpinButtonCtrl 要么忽略它,要么千位分隔符期间或逗号被容忍为数字。

是否有办法简单地关闭千位分隔符期间?反正我也不需要它。

1 个答案:

答案 0 :(得分:2)

在这种情况下,来自CSpinButtonCtrl create() CSpinButtonCtrl函数的documentation

  

<强> dwStyle   指定旋转按钮控件的样式

其中一种风格是:

  

<强> UDS_NOTHOUSANDS
  不在每个之间插入千位分隔符   三位小数。

因此请确保您的https?:\/\/www\.essentialibiza\.com\/ibiza-club-tickets\/carl-cox[\w/_-]*设置了该样式以禁用千位分隔符。您可以从属性window

中的旋转按钮样式执行此操作