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
-
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)
-
Das ist immer noch Quatsch!
Alle LVIF_* Defines sind Flags und keine gültigen States. Du meinst evtl. LVIS_FOCUSED!