关于tree ctrl拖拽的几点疑问(急)
由于是第一次接触tree ctrl,有一些不理解.借用goodboyws(深夜不眠者)帖子问几个问题
NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pNMHDR;
// TODO: Add your control notification handler code here
HTREEITEM hItem = pNMTreeView->itemNew.hItem;
int nData = m_cUserTree.GetItemData(hItem);
if (nData == -1)
{
*pResult = 0;
return;
}
m_hTreeItem = hItem;
m_pDragImageList = m_cUserTree.CreateDragImage(m_hTreeItem);//(1)为什么一定要用imagelist,如果我这个tree就没加前面的图标呢?为什么我用这code时CreateDragImage(m_hTreeItem)返回总是0?
CRect rect;
if (m_pDragImageList)//(2)这又是为什么?
{
SetCapture();//(3)这个函数??
m_cUserTree.GetItemRect(m_hTreeItem, rect, TRUE);
CPoint pt;
pt.x = pNMTreeView->ptDrag.x - (rect.left-16);
pt.y = pNMTreeView->ptDrag.y - rect.top;
CImageList::DragShowNolock(TRUE);//(4)????
m_pDragImageList->BeginDrag(0, pt);//(5)?
CPoint ptAction;
GetCursorPos(&ptAction);
m_cUserTree.ScreenToClient(&ptAction);
CImageList::DragMove(ptAction);
m_cUserTree.SelectDropTarget(m_hTreeItem);//(6)这个函数做了什么
CImageList::DragEnter(&m_cUserTree, ptAction);
m_pWndLocked = &m_cUserTree;
m_bDrag = TRUE;
}
*pResult = 0;
看上面的code,好像拖拽和CImageList类很有关系,到底是怎么个一回事?拖拽的实质又是什么?
急求解答,谢谢.