2010-09-12 186 views
1

说我有一个listview控件,其中有几个项目。我将如何允许用户拖放项目以在控件中重新排列项目。重新排列列表视图项目

listview控件在报表视图中,使用全行选择扩展样式。

在此先感谢。

回答

2

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

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

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