2009-11-13 77 views

回答

4

使用SetItemState(0,LVIS_SELECTED,LVIS_SELECTED)突出顯示,並且 SetItemState(0,〜LVIS_SELECTED,LVIS_SELECTED)不亮。

+0

我使用這種方式和它的作品! – sergiol

8

您還需要在更新項目狀態後調用SetSelectionMark。

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

剛剛成立屬性 - > Appearance->始終顯示選擇TRUE

+3

這爲我解決了它,雖然不通過GUI。如果以編程方式創建列表視圖控件,則要設置的樣式爲「LVS_SHOWSELALWAYS」。 –

1

我覺得這是在那裏你可以通過-1nItem參數以便使SetItemState功能的無證功能該功能作用於全部項目。

所以,如果你只需要選擇只有一個,我可以建議:

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

UPDATE:

(後看到http://www.verycomputer.com/417_11fcb075491b88c9_1.htm#p3

SetItemState函數發送LVM_SETITEMSTATE消息,並且將中的nItem = -1功能記錄爲其參數wParam

+1

謝謝,還有更多的信息[宏](https://msdn.microsoft.com/en-us/library/windows/desktop/bb775102(v = vs.85).aspx)。 –

0

如果你不會設置OnInitialDialog選擇的項目,你肥大使用此代碼:

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 
相關問題