假设我有一个ListView控件,其中包含多个项。我如何允许用户拖放项以在控件中重新排列它们。
ListView控件位于报表视图中,具有完整的行选择扩展样式。
事先谢谢。
在您的ListView中 WM_LBUTTONDOWN 处理程序,将当前选定的项索引存储在某个位置。
WM_LBUTTONDOWN
在您的ListView中 WM_LBUTTONUP 处理程序,使用 ListView_HitTest() 确定光标下的项目。如果与存储的索引不同,则使用 ListView_DeleteItem() 和 ListView_InsertItem() 将“拖动”的项“移动”到新索引。
WM_LBUTTONUP
ListView_HitTest()
ListView_DeleteItem()
ListView_InsertItem()
(可选)帮助用户在ListView的 WM_MOUSEMOVE 处理程序,使用 列表视图\uHitTest() 要确定光标下的项目,请使用 ListView_SetItemState() 禁用/启用 LVIS_DROPHILITED 为以前“突出显示”的项目(如果有)和“突出显示”当前项目的状态。
WM_MOUSEMOVE
列表视图\uHitTest()
ListView_SetItemState()
LVIS_DROPHILITED