我正在使用 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 要么忽略它,要么千位分隔符期间或逗号被容忍为数字。
是否有办法简单地关闭千位分隔符期间?反正我也不需要它。
答案 0 :(得分:2)
在这种情况下,来自CSpinButtonCtrl
create()
CSpinButtonCtrl
函数的documentation:
<强> dwStyle 强> 指定旋转按钮控件的样式
其中一种风格是:
<强> UDS_NOTHOUSANDS 强>
不在每个之间插入千位分隔符 三位小数。
因此请确保您的https?:\/\/www\.essentialibiza\.com\/ibiza-club-tickets\/carl-cox[\w/_-]*
设置了该样式以禁用千位分隔符。您可以从属性window