全文预览已结束
下载本文档
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
Ctreectrl 向 cListctrl拖放1) 首先需要定制全局变量 CImageListm_Image;CImageList* m_pDragImage;BOOLm_bDragging;HTREEITEMm_hDragItem, m_hDropItem;intm_nDropIndex;CWnd*m_pDropWnd;以及afx_msg void OnLButtonUp(UINT nFlags, CPoint point);afx_msg void OnMouseMove(UINT nFlags, CPoint point);afx_msg void OnBeginDrag (NMHDR* pnmhdr, LRESULT* pResult);void DropItemOnList (CListCtrl* pList);四个函数。前边的都是需要在.h文件中写的。ON_WM_LBUTTONUP()ON_WM_MOUSEMOVE()ON_NOTIFY_REFLECT(LVN_BEGINDRAG, OnBegindrag)这是前边三个函数对应的消息。这些需要在.CPP中写的。2)void CMyDlg:OnBeginDrag (NMHDR* pnmhdr, LRESULT* pResult)/ create a drag image/ Added 7/29/96NM_TREEVIEW* pNMTreeView = (NM_TREEVIEW*)pnmhdr;m_hDragItem = pNMTreeView-itemNew.hItem;m_pDragImage = m_treectrl.CreateDragImage (m_hDragItem); /函数为项创建拖拉图象列表/ changes the cursor to the drag image (DragMove() is still required in / OnMouseMove()m_pDragImage-BeginDrag (0, CPoint (8, 8); /此函数开始拖动一个图像m_pDragImage-DragEnter (GetDesktopWindow (), (NM_TREEVIEW *)pnmhdr)-ptDrag); / 拖动操作中,封锁对pWndLock确定的窗口的更新,在由point确定的位置显示拖动图象/ set dragging flagm_bDragging = TRUE;m_hDropItem = NULL;m_nDropIndex = -1;m_pDropWnd = &m_treectrl; /m_treectrl为控件变量/ capture all mouse messagesSetCapture ();void CMyDlg:OnMouseMove(UINT nFlags, CPoint point) if ( TRUE = m_bDragging)CPoint pt (point);ClientToScreen (&pt);/ move the drag imageVERIFY (m_pDragImage-DragMove (pt); /此函数移动在拖放操作中正被拖动的图象/ unlock window updatesVERIFY (m_pDragImage-DragShowNolock (FALSE); /确定是否显示拖动图象。 / get the CWnd pointer of the window that is under the mouse cursorCWnd* pDropWnd = WindowFromPoint (pt); /获得包含指定点的窗口的句柄ASSERT (pDropWnd);/ if we drag outside current windowif (pDropWnd != m_pDropWnd)/ turn off drag hilite for tree controlif (m_hDropItem)(CTreeCtrl*)m_pDropWnd)-SelectDropTarget (NULL); /此成员函数用指明一次拖放操作的目标的风格来重画该项m_hDropItem = NULL;/ turn off drag hilite for list controlif (m_nDropIndex != -1) CListCtrl* pList = (CListCtrl*)m_pDropWnd;VERIFY (pList-SetItemState (m_nDropIndex, 0, LVIS_DROPHILITED);/ redraw itemVERIFY (pList-RedrawItems (m_nDropIndex, m_nDropIndex);pList-UpdateWindow ();m_nDropIndex = -1;/ save current window pointerm_pDropWnd = pDropWnd;/ convert from screen coordinates to drop target client coordinatespDropWnd-ScreenToClient (&pt);/ if window is CTreeCtrlif (pDropWnd-IsKindOf (RUNTIME_CLASS (CTreeCtrl)UINT uFlags;/ get the item that is below cursorm_hDropItem = (CTreeCtrl*)pDropWnd)-HitTest (pt, &uFlags);/ highlight it(CTreeCtrl*)pDropWnd)-SelectDropTarget (m_hDropItem);else if (pDropWnd-IsKindOf (RUNTIME_CLASS (CListCtrl)UINT uFlags;CListCtrl* pList = (CListCtrl*)pDropWnd;/ unhilight previous itempList-SetItemState (m_nDropIndex, 0, LVIS_DROPHILITED);/ redraw previous itempList-RedrawItems (m_nDropIndex, m_nDropIndex);/ get the item that is below cursorm_nDropIndex = (CListCtrl*)pDropWnd)-HitTest (pt, &uFlags); / highlight itpList-SetItemState (m_nDropIndex, LVIS_DROPHILITED, LVIS_DROPHILITED);/ redraw itempList-RedrawItems (m_nDropIndex, m_nDropIndex);pList-UpdateWindow (); /更新/ lock window updatesVERIFY (m_pDragImage-DragShowNolock (TRUE);CDialog:OnMouseMove(nFlags, point);void CMyDlg:DropItemOnList (CListCtrl* pDropList)/ unhilite the drop targetpDropList-SetItemState (m_nDropIndex, 0, LVIS_DROPHILITED);char szLabel256;TV_ITEM tvi;tvi.hItem = m_hDragItem;tvi.mask = TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_TEXT | TVIF_HANDLE;tvi.pszText= szLabel;tvi.cchTextMax = 255;/ get item that was draggedVERIFY (m_treectrl.GetItem (&tvi);int iIndex = (m_nDropIndex = -1) ? pDropList-GetItemCount () : m_nDropIndex;/ insert item into CListCtrlVERIFY (-1 != pDropList-InsertItem (LVIF_IMAGE | LVIF_TEXT, iIndex, tvi.pszText,0, 0, tvi.iImage, 0L);/ select the new item we just insertedVERIFY (pDropList-SetItemState (iIndex, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED);/ delete the original item (move operation)/VERIFY (m_treectrl.DeleteItem (m_hDragItem);void CMyDlg:OnLButtonUp(UINT nFlags, CPoint point) if ( TRUE = m_bDragging)/ end draggingVERIFY (m_pDragImage-DragLeave (GetDesktopWindow (); /解锁由pWndLock确定的窗口并隐藏拖动图象,允许窗口更新m_pDragImage-EndDrag ();/ stop intercepting all mouse messagesVERIFY (:ReleaseCapture ();m_bDragging = FALSE;CPoint pt (point);ClientToScreen (&pt);/ get the CWnd pointer of the window that is under the mouse cursorCWnd* pDropWnd = Windo
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2026年二级建造师矿业实务考试题库(含答案)
- 2025年下半年幼儿教师资格考试《综合素质》真题和答案
- 2026年创面感染识别处置试题及答案
- 2025年猜名字海龟汤题目及答案
- 2026事业单位工勤技能-江苏-江苏假肢制作装配工三级(高级工)历年参考题库含答案详解
- 2026事业单位工勤技能-新疆-新疆信号工-机车信号设备维修二级(技师)历年参考题库含答案详解
- 2026事业单位工勤技能-广西-广西房管员四级(中级工)历年参考题库含答案详解
- 2026事业单位工勤技能-广东-广东地质勘查员四级(中级工)历年参考题库含答案详解
- 2026事业单位工勤技能-山西-山西汽车驾驶与维修员五级(初级工)历年参考题库含答案详解
- 2026事业单位工勤技能-山东-山东电工三级(高级工)历年参考题库含答案详解
- 水果农药安全间隔期执行手册
- 软包墙面施工方案及技术措施
- 急诊科护理人员的血气分析解读
- 2025年闽侯县公安局招聘警务辅助人员真题
- 2025年安徽省《保密知识竞赛必刷100题》考试题库及答案详解【有一套】
- 2025年度新疆新星国有资本投资集团有限公司校园招聘5人笔试参考题库附带答案详解
- 销售心态培训课件
- 正反转电路培训课件
- 贵州省农业发展集团有限责任公司招聘笔试题库2026
- 《男生和女生》课件
- 食材配送服务方投标方案(技术标)
评论
0/150
提交评论