首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >CComboBox排序

CComboBox排序
EN

Stack Overflow用户
提问于 2015-05-18 16:20:55
回答 3查看 6.8K关注 0票数 2

因此,我试图在一个现有的应用程序上削减我的CPP牙齿。

我遇到了一点麻烦。我的组合框项目是按顺序添加的,如下所示。但是,输出是

代码语言:javascript
复制
[1,10,11,12,13,14,15,2,3,4,5,6,7,8,9]

我看过这里的CComboBox文档了。然而,我仍然感到困惑的是,为什么会产生这样的结果。

代码语言:javascript
复制
for (int i = 1; i <= m_pPage2->GetNumberColumns(); i++)
{
    CString szColNum;
    szColNum.Format (_T("%d"), i);
    m_cSubColumn.AddString(szColNum);
}
EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-05-18 16:26:26

标准的比较函数不能很好地处理包含数字的字符串。他们没有考虑到字符串的大小也应该发挥作用。因为"10“以"1”开头,所以在索引0处,它将出现在超过"1“的任何事物之前。

如果您要用前导零填充所有的数字,以便字符串大小相同,它将按正常的数字顺序排序。

若要阻止CComboBox在使用AddString()时对其内容排序,需要将CBS_SORT属性设置为false

票数 4
EN

Stack Overflow用户

发布于 2015-05-18 16:31:40

问题是您的组合框使用的是CBS_SORT样式,因此数据是使用ASCII排序序列排序的。

要关闭排序,必须从组合框中删除CBS_SORT样式。根据您使用的资源工具,可以通过检查工具中的某些项来打开/关闭排序,或者直接转到资源文件本身,然后从组合框定义中删除CBS_SORT样式,从而删除这种样式。

票数 2
EN

Stack Overflow用户

发布于 2015-05-18 16:29:30

在组合框的“属性”窗口中,确保设置为False。这将允许您的组合框以输入的方式显示数据。

*这就是我在中所做的,我没有看到您在哪里说您在使用什么IDE。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/30308279

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档