переупорядочение элементов списка - PullRequest
1 голос
/ 12 сентября 2010

Скажем, у меня есть элемент управления списком с несколькими элементами.Как разрешить пользователю перетаскивать элементы для изменения их расположения в элементе управления.

Элемент управления просмотра списка находится в виде отчета с расширенным стилем выбора полной строки.

Заранее спасибо.

1 Ответ

3 голосов
/ 14 сентября 2010

В обработчике WM_LBUTTONDOWN вашего ListView сохраните где-то текущий выбранный индекс элемента.

В обработчике WM_LBUTTONUP вашего ListView используйте ListView_HitTest(), чтобы определить, какой элемент находится под курсором. Если он отличается от сохраненного индекса, используйте ListView_DeleteItem() и ListView_InsertItem(), чтобы «переместить» перетаскиваемый элемент в новый индекс.

(Необязательно) Чтобы помочь пользователю увидеть, куда «перетаскивается» элемент, в обработчике WM_MOUSEMOVE вашего ListView используйте ListView_HitTest(), чтобы определить, какой элемент находится под курсором, затем используйте ListView_SetItemState(), чтобы отключить / включить состояние LVIS_DROPHILITED для ранее «выделенного» элемента (если есть) и «выделить» текущий элемент.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...