CListCtrl::SetSelectionMark( int ); Funktioniert bei mir nicht



  • Hi,
    ich hab eine funktion die wie folgt aussieht:

    void funktion(void)
    {
    UpdateData( TRUE ); // Daten einlesen
    m_CtrlList.DeleteAllItems(); // löscht alle alten Einträge
    m_CtrlList.InsertItem... // hier werden nun wider daten hineingeschrieben
    m_CtrlList.SetSelectionMark( 0 ); // hier sollte das erste feld markiert werden
    UpdateData( FALSE ); // Daten auslesem
    }

    So nun wir aber leider nicht das erste feld markiert, wie so?
    Ach "m_CtrlList.SetSelectionMark( 0 )" liefert -1 zurück.
    Aber das auch richtig da nach "m_CtrlList.DeleteAllItems( )" nichts mehr markiert ist.
    Kann das sein das da eine incompatieblietät zu UpdateData(bool) herrscht?
    Oder wo könnte das Problem liegen?



  • Habs nicht ausprobiert, aber versuch mal das UpdateData(FALSE) VOR dem SetSelectionMark auszuführen.. ich hatte mal ein ähnliches Problem mit CEdit.



  • Jip,...
    dachte ich mir auch schon hatte es schon ausprobiert, hilft leider auch nicht weiter...

    auch...:
    UpdateData(FALSE);
    UpdateData(true);
    m_CtrlList.SetSelectionMark( 0 );
    UpdateData(FALSE);
    ...bringt es auch nicht 😞 *verzweifel guck*



  • Nein was ich meinte, ist.. nach SetSelectionMark UpdateData gar nicht mehr auszuführen.. ich glaub das ändert sowieso nix, es ist ein unnötiger Aufruf. Tu es lkurz davor, nciht mehr danach.



  • ...hatte ich auch schon ausprobiert. Hilft alles nicht.

    ...alles sch... *denk* ...lim.

    *gr*



  • Hi!

    Um eine Zeile zu markieren, muss man nicht nur SetSelectionMark(), sondern auch SetItemState() aufrufen, am besten so:

    SetItemState(item,LVIS_SELECTED|LVIS_FOCUSED,LVIS_SELECTED|LVIS_FOCUSED);


Anmelden zum Antworten