当父窗口收到WM_MOUSEMOVE消息时,通过调用ImageList_DragMove函数拖动树视图项,如下例所示。该示例还在拖动操作期间执行命中测试,以确定是否将树视图中的其他项目突出显示为拖放操作的目标。
// Main_OnMouseMove - 拖动树视图控件中的项目,
//突出显示作为目标的项目。
// hwndParent - 父窗口的句柄
// hwndTV - 树视图控件的句柄
// xCur和yCur - 鼠标光标的x坐标和y坐标
void Main_OnMouseMove(HWND hwndParent,HWND hwndTV,LONG xCur,LONG yCur)
{
HTREEITEM htiTarget; //目标项目的句柄
TV_HITTESTINFO tvht; //命中测试信息
if(g_fDragging){
//将项目拖动到鼠标光标的当前位置。
ImageList_DragMove(xCur, yCur);
//找出光标是否在项目上。如果是,突出显示
//该项目作为放置目标。
tvht.pt.x = xCur;
tvht.pt.y = yCur;
if ((htiTarget = TreeView_HitTest(hwndTV, &tvht)) != NULL) {
TreeView_SelectDropTarget(hwndTV, htiTarget);
}
}
return;
}