树控件拖放操作
树控件 (CTreeCtrl) 发送一个请注意,当用户开始拖动项时。 控件发送 TVN_BEGINDRAG 通知信息,当用户从鼠标左键和 TVN_BEGINRDRAG 通知消息时开始拖动项,当用户从按钮右击时开始拖动。 可以防止树控件发送这些通知通过向树控件 TVS_DISABLEDRAGDROP 样式。
您获取一个图像在拖动操作过程中通过调用 CreateDragImage 成员函数。 树控件创建基于所拖动的项的标签中拖动的位图。 然后树控件生成一个图像列表,位图添加到该文件中,并返回指向 CImageList 对象。
您必须提供实际上将该项目的代码。 这通常需要使用图像拖动的功能列表功能和处理发送的 WM_MOUSEMOVE 和 WM_LBUTTONUP (或) WM_RBUTTONUP信息,在拖动操作开始之后。 有关图像列表的更多信息,请参见 MFC 引用 和 Image Lists 中的 CImageList,在 Windows SDK。 有关拖动树的更多信息的控件项目,请参见 将树视图项目,它还位于 Windows SDK。
如果在树控件中的项是拖放操作的目标,需要知道鼠标光标时在目标项。 通过调用 HitTest 成员函数发现。 您指定点和整数或包含鼠标光标的当前坐标 TVHITTESTINFO 结构的地址。 当函数返回时,整数或结构包含指示鼠标光标的位置的标志相对树控件。 如果光标在树控件中的项,结构包含项目的句柄。
可以指定项目是拖放操作的目标通过调用 SetItem 成员函数将状态到 TVIS_DROPHILITED 值。 具有此状态的项目中使用的样式绘制指示拖放目标。