簡體   English   中英

CComboBox 排序

[英]CComboBox Sorting

所以我試圖在現有的應用程序上削減我的 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);
}

標准比較函數不能很好地處理包含數字的字符串。 他們沒有考慮到字符串的大小也應該起作用。 由於“10”以“1”開頭,因此它將出現在索引0處大於“1”的任何內容之前。

如果您要用前導零填充所有數字,以便字符串大小相同,它將按正常數字順序對其進行排序。

要在使用AddString()時阻止CComboBox對其內容進行排序,您需要將CBS_SORT屬性設置為false

問題是您的組合框使用的是CBS_SORT樣式,因此數據使用 ASCII 整理順序進行排序。

要關閉排序,您必須從組合框中刪除CBS_SORT樣式。 根據您使用的資源工具,可以通過檢查工具中的某些項目來打開/關閉排序來刪除此樣式,或者直接轉到資源文件本身並從組合框定義中刪除CBS_SORT樣式。

在組合框的屬性窗口中,確保將 set 設置為 False。 這將允許您的組合框以您輸入的方式顯示數據。

*這就是我在 Visual Studio 中所做的,我沒有看到你在哪里說你使用的是什么 IDE。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM