2009-11-13 12 views

Antwort

4

Verwenden Sie SetItemState (0, LVIS_SELECTED, LVIS_SELECTED) zum Hervorheben und SetItemState (0, ~ LVIS_SELECTED, LVIS_SELECTED) zum Hervorheben.

+0

Ich benutze es auf diese Weise, und es funktioniert! – sergiol

8

Sie müssen SetSelectionMark nach dem Aktualisieren der Elementstatus auch aufrufen.

SetItemState(prev_item, ~LVIS_SELECTED, LVIS_SELECTED); 
SetItemState(new_selected_item, LVIS_SELECTED, LVIS_SELECTED); 
SetSelectionMark(new_selected_item); 
2

Gerade Set Eigenschaften-> Erscheinung-> Always Show Auswahl auf TRUE

+3

Dies löste es für mich, aber nicht über die GUI. Wenn Sie das Steuerelement für die Listenansicht programmgesteuert erstellen, lautet der festzulegende Stil "LVS_SHOWSELALWAYS". –

1

Ich denke, es ist eine nicht dokumentierte Funktion der SetItemState Funktion, wo Sie -1 als nItem Argument übergeben können, um die Funktion wirkt auf alle Artikel.

Also, wenn Sie nur nur eine auswählen will, kann ich vorschlagen:

SetItemState(-1, 0, LVIS_SELECTED); 
    SetItemState(index, LVIS_SELECTED, LVIS_SELECTED); 

UPDATE:

(nachdem er http://www.verycomputer.com/417_11fcb075491b88c9_1.htm#p3)

Die Funktion SetItemState sendet die Nachricht LVM_SETITEMSTATE, und das Element nItem = -1 ist auf dem message's reference documentation als sein wParam Argument dokumentiert.

+1

Danke, es gibt weitere Informationen im [Makro] (https://msdn.microsoft.com/en-us/library/windows/desktop/bb775102 (v = vs.85) .aspx). –

0

Wenn man wird nicht gesetzt ausgewähltes Element in OnInitialDialog Mast Sie diesen Code verwenden:

m_pSPSMapList->EnsureVisible(nItem, FALSE); 
m_pSPSMapList->SetFocus(); 
m_pSPSMapList->SetItemState(nItem, LVIS_FOCUSED | LVIS_SELECTED, 
            LVIS_FOCUSED | LVIS_SELECTED); 

return FALSE; // OnInitialDialog necessarily must return false 
Verwandte Themen