假设我有一个包含多个项目的listview控件。我将如何允许用户拖放项目以在控件中重新排列它们。

列表 View 控件位于报表 View 中,具有全行选择扩展样式。

提前致谢。

最佳答案

在ListView的WM_LBUTTONDOWN处理程序中,将当前选定的项目索引存储在某处。

在ListView的WM_LBUTTONUP处理程序中,使用ListView_HitTest()确定光标下方的项目。如果与存储的索引不同,则使用ListView_DeleteItem()ListView_InsertItem()将“拖动的”项目“移动”到新索引。

(可选)为帮助用户查看项目被“拖到”的位置,在ListView的WM_MOUSEMOVE处理程序中,使用ListView_HitTest()确定哪个项目在光标下,然后使用ListView_SetItemState()禁用/启用先前“突出显示”的LVIS_DROPHILITED状态”(如果有),并“突出显示”当前项目。

关于c++ - 重新排列 ListView 项,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3693362/

10-13 00:06