Zeile einer CListBox mit Zeilenumbruch



  • Hallo ich möcht in einer Zeile meiner Listbox einen 2 zeiligen Text reinschriben aber in der Listbox soll nur eine Zeile dafür in anspruch genommen werden. Wie mache das ?

    thx 🙂



  • Vielleicht, indem man die Zeilen vorher hintereinander in eine Zeile kopiert?



  • Wie meinst du das Renè kannst du mir da vieleicht ein Beispiel geben habe wenig mit dieser Listbox bisher gemacht.

    danke



  • CString zeile1="abc", zeile2="def";
    listbox.AddString( zeile1+zeile2);
    


  • habe es ausprobiert aber er schreibt alles in einer Zeile ich möchte aber das er das folgend in die Listbox reinschreibt:

    // richtig
    abc // untereinander in einer Listbox-Zeile
    def

    nicht

    // falsch
    abcdef.

    Der Text ist grösser wie 300 Zeilen, diese möchte ich in einer Listbox-Zeile reinschreiben.

    danke für die Hilfe bisher



  • Hm,
    also da die Listbox kein automatische 'Wordwrapping' macht, musst Du dann wohl die LB ableiten, mit SetItemHeight die Einträge auf die doppelte Höhe setzen, manuell die Position berechnen, an dem der String umgebrochen werden muss, und dann diese OwnerDrawn-Listbox in OnDrawItem selber zeichnen 😉



  • Vielleicht meine Beispiel wird hilfreich 😃 nur nimm statt * Leerstrich im deine Fall

    void CSpeed_EuropeDlg::OnBUTTONSchweiz()
    {
    CListBox *pBoxInnerOrts;
    CListBox *pBoxAusserOrts;
    CListBox *pBoxSchnellStrasse;
    CListBox *pBoxAutobahn;

    pBoxInnerOrts = (CListBox *)GetDlgItem(IDC_LIST_InnerOrts);
    pBoxAusserOrts = (CListBox *)GetDlgItem(IDC_LIST_AusserOrts);
    pBoxSchnellStrasse = (CListBox *)GetDlgItem(IDC_LIST_SchnellStrasse);
    pBoxAutobahn = (CListBox *)GetDlgItem(IDC_LIST_Autobahn);

    CFile datei("LaenderDat.txt", CFile::modeRead);
    char string[4000];
    char buffer[4000];
    char *tocenpointer = buffer;

    CString behaelter;
    CString position;
    int laenge;
    int zaehler = 14;

    pBoxInnerOrts->ResetContent();
    pBoxAusserOrts->ResetContent();
    pBoxSchnellStrasse->ResetContent();
    pBoxAutobahn->ResetContent();

    datei.Read(string,sizeof (string));
    position.Insert(0,string);
    laenge = position.Find("Schweiz");
    laenge +=7; // Position Korrektur,hinter Schweiz

    try
    {
    while(zaehler != 0)
    {
    if(tocenpointer != NULL)
    {
    tocenpointer = _tcstok( string + laenge,"*");
    behaelter.Format("%s",tocenpointer);
    laenge += behaelter.GetLength() + 1;
    pBoxInnerOrts->AddString(behaelter);

    tocenpointer = _tcstok( string + laenge,"*");
    behaelter.Format("%s",tocenpointer);
    laenge += behaelter.GetLength() + 1;

    pBoxAusserOrts->AddString(behaelter);

    tocenpointer = _tcstok( string + laenge,"*");
    behaelter.Format("%s",tocenpointer);
    laenge += behaelter.GetLength() + 1;

    pBoxSchnellStrasse->AddString(behaelter);

    tocenpointer = _tcstok( string + laenge,"*");
    behaelter.Format("%s",tocenpointer);
    laenge += behaelter.GetLength() + 3;

    pBoxAutobahn->AddString(behaelter);
    zaehler--;
    tocenpointer = strtok( NULL,"\n");
    }
    }
    datei.Close();
    UpdateData(FALSE);
    }
    catch(CFileException* e)
    {
    AfxGetMainWnd()->MessageBox("Fehler beim Öffnen der Datei!");;
    e->Delete();
    }
    }


Anmelden zum Antworten