树型控件拖动的完美实现
2006-07-23 11:20:32 来源:WEB开发网核心提示: 象,我们想让移动中的图象经过某些项目时高亮度显示,树型控件拖动的完美实现(2),这可以调用 SelectDropTarget 来实现,在调用 SelectDropTarget 前,滚动速度根据鼠标的位置确定,4、拖动过程中节点的智能展开这一步我们要实现的功能是在拖动过程中当鼠标停留在某
象,我们想让移动中的图象经过某些项目时高亮度显示,这可以调用 SelectDropTarget 来实现。在调用 SelectDropTarget 前,我们先调用
DragShowNolock ( false ) 来隐藏图象列表,之后再调用 DragShowNolock ( true ) 来恢复图象列表的显示,这样就不会在拖动过程中留下难
看的轨迹。最后我们处理 WM_LBUTTONUP 消息用于完成拖动操作,在给消息中,我们需要完成结束拖动图想的显示、删除拖动图象、释
放鼠标、节点的拷贝/删除等操作。在节点的拷贝/删除操作中,如果是父节点拖到子节点上,我们可以先将父节点拷到根结点下的临时节点
中,再从临时结点处拷到子节点,然后将根结点下的临时节点删除,这样做的目的是防止产生异常。
2、处理无意拖动
大家可能都有过这样的经历:在鼠标按下时不小心移动了鼠标,这时系统就认为产生了一个移动操作。如果我们不针对这种情况加以解
决的话,就很容易产生误操作。下面我们就提出一个解决方法:设置时间延迟。也就是说当用户按下鼠标后必须在原位置停留一段时间,才
能激活拖动操作。
3、处理拖动过程中的滚动问题
当我们进行拖动时,如果目的节点不可见,则需要拖动滚动条或收拢其它一些节点以使得目的节点显示出来,无疑,这会给我们带来很
大的不便。下面我们就来给树型控件添加自动滚动支持。
设置一个定时器,在 WM_TIMER 消息中检测鼠标的位置,如果靠近树型控件的下边缘,则使得控件向下滚动。靠近上边缘则向上滚动。
滚动速度根据鼠标的位置确定。
4、拖动过程中节点的智能展开
这一步我们要实现的功能是在拖动过程中当鼠标停留在某个节点上一段时间后,该节点会自动展开。
更多精彩
赞助商链接