CComboBox排序

时间:2015-05-18 16:20:56

标签: c++ ccombobox

所以我试图在现有应用程序上削减我的CPP牙齿。

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

[1,10,11,12,13,14,15,2,3,4,5,6,7,8,9]

我查看了CComboBox documentation here。然而,我仍然对为什么会产生这个结果感到困惑。

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

3 个答案:

答案 0 :(得分:2)

标准比较功能不能很好地处理包含数字的字符串。他们没有考虑到弦的大小也应该发挥作用。因为&#34; 10&#34;以&#34; 1&#34;开头然后它会出现在超过&#34; 1&#34;在索引0。

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

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

答案 1 :(得分:2)

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

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

答案 2 :(得分:1)

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

*这就是我在Visual Studio中所做的,我没有看到你在哪里说出你正在使用的IDE。