因此,我试图在一个现有的应用程序上削减我的CPP牙齿。
我遇到了一点麻烦。我的组合框项目是按顺序添加的,如下所示。但是,输出是
[1,10,11,12,13,14,15,2,3,4,5,6,7,8,9]我看过这里的CComboBox文档了。然而,我仍然感到困惑的是,为什么会产生这样的结果。
for (int i = 1; i <= m_pPage2->GetNumberColumns(); i++)
{
CString szColNum;
szColNum.Format (_T("%d"), i);
m_cSubColumn.AddString(szColNum);
}发布于 2015-05-18 16:26:26
标准的比较函数不能很好地处理包含数字的字符串。他们没有考虑到字符串的大小也应该发挥作用。因为"10“以"1”开头,所以在索引0处,它将出现在超过"1“的任何事物之前。
如果您要用前导零填充所有的数字,以便字符串大小相同,它将按正常的数字顺序排序。
若要阻止CComboBox在使用AddString()时对其内容排序,需要将CBS_SORT属性设置为false
发布于 2015-05-18 16:31:40
问题是您的组合框使用的是CBS_SORT样式,因此数据是使用ASCII排序序列排序的。
要关闭排序,必须从组合框中删除CBS_SORT样式。根据您使用的资源工具,可以通过检查工具中的某些项来打开/关闭排序,或者直接转到资源文件本身,然后从组合框定义中删除CBS_SORT样式,从而删除这种样式。
发布于 2015-05-18 16:29:30
在组合框的“属性”窗口中,确保设置为False。这将允许您的组合框以输入的方式显示数据。
*这就是我在中所做的,我没有看到您在哪里说您在使用什么IDE。
https://stackoverflow.com/questions/30308279
复制相似问题