2

所以我试图在现有的应用程序上削减我的 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);
}
4

3 回答 3

3

标准比较函数不能很好地处理包含数字的字符串。他们没有考虑到字符串的大小也应该起作用。既然“10”以“1”开头,那么它将出现在索引0处超过“1”的任何内容之前。

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

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

于 2015-05-18T16:26:26.320 回答
2

问题是您的组合框正在使用该CBS_SORT样式,因此数据使用 ASCII 整理序列进行排序。

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

于 2015-05-18T16:31:40.637 回答
1

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

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

于 2015-05-18T16:29:30.763 回答