Markierung einer Zeile in CListCtrl aufheben.



  • hi,

    jetzt habe ich es endlich geschafft eine zeile in meiner listctrl markiert zu bekommen. das problem ist jetzt, wenn ich eine neue zeile markiere bleibt die markierung der anderen zeilen noch bestehen. d.h wenn ich fünf zeilen nach einander markiere, habe ich fünf markierte zeilen aber ich will nur eine markiert haben.

    die zeile markiere ich mit:

    m_liste.SetItemState(i,LVIS_SELECTED|LVIF_STATE,LVIS_SELECTED|LVIF_STATE);

    weiß vielleicht jemand den befehl um die zeile wieder zu demarkieren oder eine andere lösung.

    mfg

    final_striker


  • Mod

    Der Code ist falsch.

    Selektiert wird mit

    m_liste.SetItemState(i,LVIS_SELECTED,LVIS_SELECTED);
    

    LVIF_STATE hat hier nichts zu suchen

    Deselktiert wird mit

    m_liste.SetItemState(i,0,LVIS_SELECTED);
    


  • ja, ich hatte ja das problem das die markierte zeile den fokus verlor und die markierung nicht mehr zu sehen war. deshalb hab ich auch das lvis_state genohmen um die markierung dauerhaft zu machen.

    aber deine hilfe hat mich dann zu der lösung geführt.

    habe es jetzt so gelöst:

    liste.SetItemState(i,0|0,LVIS_SELECTED|LVIF_STATE)


  • Mod

    Das ist immer noch Quatsch!
    Alle LVIF_* Defines sind Flags und keine gültigen States. Du meinst evtl. LVIS_FOCUSED!


Anmelden zum Antworten