CComboBox排序

Ant*_*ell 2 c++ mfc ccombobox

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

我遇到了一些困难。我的组合框项目正在按顺序添加,如下所示。但是,输出是

[1,10,11,12,13,14,15,2,3,4,5,6,7,8,9]
Run Code Online (Sandbox Code Playgroud)

我在这里查看了CComboBox 文档。然而,我仍然很困惑为什么会产生这样的结果。

for (int i = 1; i <= m_pPage2->GetNumberColumns(); i++)
{
    CString szColNum;
    szColNum.Format (_T("%d"), i);
    m_cSubColumn.AddString(szColNum);
}
Run Code Online (Sandbox Code Playgroud)

Nat*_*ica 5

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

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

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