CCombobox Suche nach Teilstring



  • Hallo,

    ist es möglich in den Einträgen einer CCombobox nach einem bestimmten Wort zu suchen? Programmiert wird mit VS2013 unter Win7 64bit.

    int nIndex;
    CCombobox CB;
    
    CB.AddString(_T("Mein Name ist Hase"));
    CB.AddString(_T("Ich glaub' mich tritt ein Pferd"));
    
    CString SearchStringLang = _T("Mein Name ist Hase");
    CString SearchStringErstesWort  = _T("Mein");
    CString SearchStringLetztesWort = _T("Hase");
    
    // Funktioniert
    CB.SelectString(0, SearchStringLang);
    
    // Funktioniert auch
    nIndex = CB.FindString(0, SearchStringLang);
    CB.SetCurSel(nIndex);
    
    // Funktioniert
    CB.SelectString(0, SearchStringKurzErstesWort);
    
    // Funktioniert auch;
    nIndex = CB.FindString(0, SearchStringKurzErstesWort);
    CB.SetCurSel(nIndex);
    
    // Funktioniert nicht
    CB.SelectString(0, SearchStringKurzLetztesWort);
    
    // Funktioniert auch nicht, Rückgabewert nIndex = -1;
    nIndex = CB.FindString(0, SearchStringLetztesWort);
    CB.SetCurSel(nIndex);
    

    Mit dem kompletten SuchString klappt die Suche. Auch wenn mit dem 1. Wort des Combobox Eintrags gesucht wird, funktioniert es.

    Wie kann aber nach einem Wort gesucht werden, dass in der Mitte oder Ende eines Combobox Eintrags steht?

    Grüße,
    Bernd


  • Mod

    Selber programmieren.
    Jeden String holen und vergleichen.



  • Habe jetzt folgenden Weg gefunden:

    CCombobox CB;
    
    CString sEintrag;
    for (int i = 0; i <= 200; i++)
    {
       CB.GetLBText(i, sEintrag);
    
       if (sEintrag.Find(_T("Hase")) != -1)
       {
          m_ctlCombo_Zeitzone.SetCurSel(i);
          break;
       }
    }
    

    Ist das der einzige Weg?



  • Danke für die Antwort.

    Dann habe ich ja den richtigen Weg gefunden.


Anmelden zum Antworten