Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/126.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 为什么CSpinButtonCtrl不能正确处理大于1000的数字?_C++_Mfc_Cedit - Fatal编程技术网

C++ 为什么CSpinButtonCtrl不能正确处理大于1000的数字?

C++ 为什么CSpinButtonCtrl不能正确处理大于1000的数字?,c++,mfc,cedit,C++,Mfc,Cedit,我在MFC中有一个对话框,带有一个CSpinButtonCtrl和一个附加的好友(CEdit)。当自旋控制的最大值低于1000时,它们可以正常工作,但如果该值较高,则当该值为1000或更高时,CEdit中的值被钳制为千个单位(例如,它被钳制为4,而不是4345) 以编程方式设置范围: const int max_value = 5000; auto spin = (CSpinButtonCtrl*)GetDlgItem(IDC_SPIN_1); spin->SetRange(1, max_

我在MFC中有一个对话框,带有一个
CSpinButtonCtrl
和一个附加的好友(
CEdit
)。当自旋控制的最大值低于1000时,它们可以正常工作,但如果该值较高,则当该值为1000或更高时,
CEdit
中的值被钳制为千个单位(例如,它被钳制为4,而不是4345)

以编程方式设置范围:

const int max_value = 5000;
auto spin = (CSpinButtonCtrl*)GetDlgItem(IDC_SPIN_1);
spin->SetRange(1, max_value);

知道发生了什么吗?

由于我找不到任何相关问题,我将发布我的查询:

问题产生于这样一个事实,即当CSpinButtonCtrl设置好友的文本时,它会将其数值转换为默认包含千位分隔符的字符串。可以注意到,
CEdit
控件设置为仅接受数字。由于千位分隔符不是一个数字,
CEdit
将文本夹在其上,只将文本保留在分隔符的左侧(在我的例子中是千位)

要解决此问题,只需将样式添加到旋转控件:

CONTROL "",IDC_SPIN_1,"msctls_updown32",UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS,313,42,11,14
当然,另一个选项是从编辑控件中删除
ES_编号
,但这不是我的UI需要

CONTROL "",IDC_SPIN_1,"msctls_updown32",UDS_NOTHOUSANDS | UDS_SETBUDDYINT | UDS_ALIGNRIGHT | UDS_AUTOBUDDY | UDS_ARROWKEYS,313,42,11,14