📄 subject_22041.htm
字号:
<p>
序号:22041 发表者:yeyongqiang 发表日期:2002-11-22 09:26:41
<br>主题:树控件的拖动
<br>内容:我最近在改一个师兄留下的活,其中有一个树控件拖动的很不稳定<BR>老是出现错误,哪位大虾有有关树控件的拖动的文章或例子,请告诉我.谢谢.(主要是在拖动一个带节点的父节点作为另外一个的子节点时)<BR>
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
回复者:yeyongqiang 回复日期:2002-11-22 10:05:26
<br>内容:可有哪个老大帮个忙啊.很急啊?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:徐景周 回复日期:2002-11-22 10:17:01
<br>内容:http://www.vckbase.com/document/viewdoc.asp?id=340<BR><BR>http://www.vckbase.com/document/viewdoc.asp?id=439
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:yeyongqiang 回复日期:2002-11-22 10:28:36
<br>内容:我的焦点在拖动后老是不能定位,总是在第一个节点点亮.实际上内存中的还是在选中的节点.<BR>我把设计模型发出来吧.
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:yeyongqiang 回复日期:2002-11-22 10:32:02
<br>内容:徐兄帮我看看有什么问题!欢迎大家帮忙.<BR><BR>1. 确保树型控件支持拖放。如果控件具有TVS_DISABLEDRAGDROP标志,则系统不会发送TVN_BEGINGDRAG控件通知。因此,首先需要确保控件没有设置TVS_DISABLEDRAGDROP标志。<BR>2. 在类CTreeView的派生类中声明成员变量以跟踪拖放(移动)操作进程、被移动的列表项的句柄以及要放的位置。成员变量m_pDragImage保存拖放(移动)操作进行过程中的图像列表。成员变量m_bLDragging跟踪拖放(移动)操作进程, m_hitemDrag存放被移动的列表项的句柄,m_hitemDrop存放要放的位置。<BR>3. 添加TVN_BEGINGDRAG控件通知的处理函数OnBeginDrag。该成员函数接收开始拖放的消息,同时创建拖动时显示的图像。<BR>4. 添加WM_MOUESMOVE消息处理函数OnMouseMove以更新拖动的图像,同时负责更新拖动图像的位置和放置的位置。在这里,DragMove函数是移动图像,如果鼠标移到某个树形列表项上,则更新放置目标。第一次调用DragShowNolock是隐藏拖动图像,并允许树形控件更新;第二次调用DragShowNolock是再次显示拖动图像。<BR>5. 添加WM_LBUUTONUP消息处理函数OnLButtonUp。该函数完成整个拖放操作。在这里首先判断是否正在进行拖放操作。<BR>6. 如果是进行拖放操作,则进行拖放。拖放的过程是递归的。因为某个节点也许带有多层子节点。它的流程是:<BR><BR>CoyBranch(hBranch) //拷贝某个分支<BR>{ <BR>CopyItem(hBranch);//拷贝当前分支的项。<BR> hChild=GetChildItem(hBranch)//获得该分支的第一个子节点<BR> While(hChild!=NULL)//一直到该节点没有子节点<BR> {<BR> CopyBranch(hChild) //递归调用<BR> hChild=GetNextSiblingItem(hChild)//获得下一个兄弟节点。<BR>}<BR>}<BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:Justin Le 回复日期:2003-02-25 23:03:28
<br>内容:!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -