这拖拽功能是因为项目临时赶出来的,希望能够对看到者有所帮助,如果使用以下代码,出现BUG希望能够留言
一:CTreeCtrl实现拖拽效果主要要实现两点:
1.响应TVN_BEGINDRAG消息;
2.实现WM_MOUSEMOVE和WM_LBUTTOMUP 消息;
二:添加额外成员变量:
CImageList* m_pImageList;//保存获取的ImageList
BOOL m_bIsDrag;//设定操作拖拽的标志位 TRUE 为拖拽状态
HTREEITEM m_hDragItem; //被拖拽的节点句柄
TVN_BEGINDRAG 实现代码:
m_hDragItem = pNMTreeView->itemNew.hItem ;
CPoint treePt= pNMTreeView->ptDrag ;
MapWindowPoints(&m_treeIndicators,&treePt,1);
if(NULL == m_hDragItem){
return ;
}
m_pImageList = CreateDragImageEx(m_hDragItem);
if(NULL == m_pImageList){
return ;
}
m_pImageList->BeginDrag(0,CPoint(0,0)); //拖拽图像相对于鼠标焦点的偏移坐标