ClistCtrl устанавливается в одиночный и одиночный столбцы в представлении отчета без заголовка.
Я пробовал SetItemState(0,LVIS_SELECTED,LVIF_STATE)
и
SetSelectionMark(int index)
, но они не работают.
ClistCtrl устанавливается в одиночный и одиночный столбцы в представлении отчета без заголовка.
Я пробовал SetItemState(0,LVIS_SELECTED,LVIF_STATE)
и
SetSelectionMark(int index)
, но они не работают.
вам также необходимо вызвать SetSelectionMark после обновления состояний элемента.
SetItemState(prev_item, ~LVIS_SELECTED, LVIS_SELECTED);
SetItemState(new_selected_item, LVIS_SELECTED, LVIS_SELECTED);
SetSelectionMark(new_selected_item);
Используйте SetItemState (0, LVIS_SELECTED, LVIS_SELECTED), чтобы выделить, и SetItemState (0, ~ LVIS_SELECTED, LVIS_SELECTED), чтобы высвечивать.
Просто установите Свойства- > Внешний вид- > Всегда показывать выбор до ИСТИНА
Я думаю, что есть недокументированная функция SetItemState
, где вы можете передать -1
в качестве аргумента nItem
, чтобы сделать функция действует на все элементы.
Итак, если вы хотите выбрать только один, я могу предложить:
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
.
Если вы не установите выделенный элемент в 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