重新排列listview项目

时间:2010-09-12 01:21:06

标签: c++ winapi listview

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

listview控件位于报表视图中,整行选择扩展样式。

提前致谢。

1 个答案:

答案 0 :(得分:3)

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

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

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