CEdit - Autoscrolling in der Editbox



  • Hallo,

    Ich habe ein meinen Programm einen kleinen Chat mit eingebaut, die ankommenden Strings werden in einer Editbox(mehrzeilig,return mögliche, vertikales scrollen an) angezeigt, ich möchte jetzt aber, dass immer der letzte Eintrag angezeigt wird, also das der Scrollbalken automtisch mitläuft. Könnte mir jemand mel einen Tip geben wie ich das anstellen soll? Ich hab schon sowas

    GetDlgItem(IDC_EDITCHATFENSTER)->SetScrollPos(1,pos,TRUE);
    

    probiert, aber irgendwie krieg ich es nicht hin.

    Lunix

    [ Dieser Beitrag wurde am 23.04.2002 um 18:10 Uhr von Lunix editiert. ]



  • Hallo,

    ich empfehle dir folgendes Vorgehen:
    Du nimmst eine ListBox anstatt der EditBox als Chatfenster mit der Eigenschaft: Auswahl->keine
    Dann legst du ne Membervariable für die ListBox an( Control CListBox)

    In deiner OnTextSend-Funktion schreibst du dann folgendes:

    CString strText;
    GetDlgItemText( IDC_EDITEINGABEZEILE, strText); // Text holen
    SetDlgItemText( IDC_EDITEINGABEZEILE, "");      // Text löschen
    m_ListBox.SetCurSel(m_ListBox.AddString( strText));// Text im Chatfenster anzeigen
    


  • Hi,

    setze im Klassenassi eine CEdit-Membervariable auf das Eingabefenster

    UpdateData(TRUE);
        m_Edit.LineScroll(m_Edit.GetLineCount(),0);
        UpdateData(FALSE);
    

    Das Selbe müssten aber auch die Messages EM_GETLINECOUNT und EM_LINESCROLL hinbekommen. Habe ich aber nicht ausprobiert.



  • Klappt, Danke pfalzmarc, aber nur mit der Änderung, das nach dem LineScroll kein UpdateData(FALSE) stehen darf.

    Lunix



  • Warum hat das niemand für die FAQ vorgeschlagen?? 🙂
    -> Archiviert


Anmelden zum Antworten