ClistCtrl在報告視圖中設置爲單個選擇&單列,不含標題。如何將CListCtrl中的項目設置爲選中狀態?
我試過SetItemState(0,LVIS_SELECTED,LVIF_STATE)
和
SetSelectionMark(int index)
但這些不起作用。
ClistCtrl在報告視圖中設置爲單個選擇&單列,不含標題。如何將CListCtrl中的項目設置爲選中狀態?
我試過SetItemState(0,LVIS_SELECTED,LVIF_STATE)
和
SetSelectionMark(int index)
但這些不起作用。
使用SetItemState(0,LVIS_SELECTED,LVIS_SELECTED)突出顯示,並且 SetItemState(0,〜LVIS_SELECTED,LVIS_SELECTED)不亮。
您還需要在更新項目狀態後調用SetSelectionMark。
SetItemState(prev_item, ~LVIS_SELECTED, LVIS_SELECTED);
SetItemState(new_selected_item, LVIS_SELECTED, LVIS_SELECTED);
SetSelectionMark(new_selected_item);
剛剛成立屬性 - > Appearance->始終顯示選擇到TRUE
這爲我解決了它,雖然不通過GUI。如果以編程方式創建列表視圖控件,則要設置的樣式爲「LVS_SHOWSELALWAYS」。 –
我覺得這是在那裏你可以通過-1
爲nItem
參數以便使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
。
謝謝,還有更多的信息[宏](https://msdn.microsoft.com/en-us/library/windows/desktop/bb775102(v = vs.85).aspx)。 –
如果你不會設置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
我使用這種方式和它的作品! – sergiol