拖放操作

【勇芳软件工作室】汉化HomePreviousNext

当用户开始拖动项目时,树视图控件会通知父窗口。当用户开始使用鼠标左键拖动项目和TVN_BEGINRDRAG通知消息时,父窗口会收到TVN_BEGINDRAG通知消息。通过给树视图控制TVS_DISABLEDRAGDROP样式,您可以防止树视图控件发送这些通知。

通过使用TVM_CREATEDRAGIMAGE消息获取拖动操作期间显示的图像。树视图控件基于正在拖动的项目的标签创建拖动位图。然后树视图控件创建一个图像列表,将位图添加到其中,并返回图像列表的句柄。

您必须提供实际拖动项目的代码。这通常涉及在拖动操作开始之后使用图像列表功能的拖动功能并处理发送到父窗口的WM_MOUSEMOVEWM_LBUTTONUP(或WM_RBUTTONUP)消息。有关图像列表功能的更多信息,请参阅图片列表.有关拖动树视图项目的更多信息,请参阅拖动树视图项目.

如果树视图控件中的项目是拖放操作的目标,则需要知道鼠标光标在目标项目上的位置。您可以使用TVM_HITTEST消息了解。您指定包含鼠标光标当前坐标的TV_HITTESTINFO结构的地址。当SendMessage函数返回时,结构包含一个标志,指示鼠标光标相对于树视图控件的位置。如果光标位于树视图控件中的某个项目之上,则该结构也包含该项目的句柄。

您可以通过使用TVM_SETITEM消息将状态设置为TVIS_DROPHILITED值来指示项目是拖放操作的目标。具有此状态的项目以用于指示拖放目标的样式绘制。