MFC中listctrl图片拖拽效果
CEffectList继承基类clistctrl
程序运行效果如下,使用的VS2013
要注意的地方,假如要将控件拖出窗口以外的地方,需要修改拥有拖拽窗口的属性:m_pDragImageList->DragEnter(NULL, pt);改为NULL即可,需要只在父窗口中
运行,则把NULL替换成GetParent()
void CEffectList::OnLvnBegindrag(NMHDR *pNMHDR, LRESULT *pResult)
{
LPNMLISTVIEW pNMLV = reinterpret_cast<LPNMLISTVIEW>(pNMHDR);
// TODO: 在此添加控件通知处理程序代码
*pResult = 0;
int count = GetSelectedCount();
if (1 != count)
return;
POSITION pos = GetFirstSelectedItemPosition();
if (pos == NULL)
{
return;
}
m_nSelItem = GetNextSelectedItem(pos);
if (-1 == m_nSelItem)
return;
CPoint pt = pNMLV->ptAction;
m_pDragImageList = CreateDragImage(m_nSelItem, &pt);
if (m_pDragImageList == NULL)
{
return;
}
m_bDragging = TRUE;
m_pDragImageList->BeginDrag(0, CPoint(8, 8));
ClientToScreen(&pt);
CRect rt;
GetParent()->GetWindowRect(&rt);
pt.x -= rt.left;
pt.y -= rt.top;
m_pDragImageList->DragEnter(GetParent(), pt);
SetCapture();
}
void CEffectList::OnLButtonDown(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
if(m_bDragging)
{
ReleaseCapture();
m_bDragging = FALSE;
//m_nSelItem = -1;
m_pDragImageList->DragLeave(GetParent());
m_pDragImageList->EndDrag();
m_pDragImageList->DeleteImageList();
delete m_pDragImageList;
m_pDragImageList = NULL;
}
CListCtrl::OnLButtonDown(nFlags, point);
}
void CEffectList::OnMouseMove(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
if (m_bDragging)
{
CPoint pt = point;
ClientToScreen(&pt);
CRect rt;
GetParent()->GetWindowRect(&rt);
pt.x -= rt.left+20;
pt.y -= rt.top+20;
m_pDragImageList->DragMove(pt);
}
CListCtrl::OnMouseMove(nFlags, point);
}
void CEffectList::OnLButtonUp(UINT nFlags, CPoint point)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
if (m_bDragging)
{
ReleaseCapture();
m_bDragging = FALSE;
//m_nSelItem = -1;
m_pDragImageList->DragLeave(GetParent());
m_pDragImageList->EndDrag();
m_pDragImageList->DeleteImageList();
delete m_pDragImageList;
m_pDragImageList = NULL;
}
CListCtrl::OnLButtonUp(nFlags, point);
}
MFC中listctrl图片拖拽效果相关推荐
- html设置图片不可拖拽,js css3实现图片拖拽效果
本文实例为大家分享了css3实现图片拖拽效果的具体代码,供大家参考,具体内容如下 body{ text-align: center; } .container{ display: flex; just ...
- html js点击字图片下拉,JavaScript实现文字与图片拖拽效果的方法
本文实例讲述了JavaScript实现文字与图片拖拽效果的方法.分享给大家供大家参考.具体实现方法如下: JavaScript实现文字与图片的拖拽效果 *{padding:0;margin:0;} . ...
- MFC中窗口实现拖拽文件功能
MFC窗口拖拽文件功能指的是用鼠标将文件拖拽入窗口后,在窗口中可以获取拖拽文件的绝对路径,如图1所示. 图1 文件拖拽功能 实现窗口的拖拽文件功能,首先要将窗口注册为放置拖拽文件的目标,之后在窗口中响 ...
- js实现图片拖拽效果
没拖拽之前 <!DOCTYPE html> <html lang="en"><head><meta charset="UTF-8 ...
- WinForm支持拖拽效果
有一个MSDN客户提问在WinForm中如何实现拖拽效果--比如在WinForm中有一个Button,我要实现的效果是拖拽这个Button到目标位置后生成一个该控件的副本. 其实这个操作主要分成三步走 ...
- unity3D如何实现2D sprite,3D物品和UI图片的拖拽效果
[Unity学习笔记] (一)如何实现2d sprite和3D物品的拖拽效果 1.调节camera >- Projection到Orthographic模式 Unity camera proje ...
- 【加强版】js原生实现拖拽效果,这次没有用document的mousedown、mousemove、mouseup事件我们来点实际的(但是有个弊端:拖拽过程中鼠标会变成一个禁用符号,不太友好)
<div class='dragged'></div> //初始化需要拖拽的列initDrags() {var arr = document.querySelectorAll( ...
- 不一样的 9 宫格图片展示,仿 Nice 首页图片列表 9 图样式,并实现拖拽效果
ImageNice9Layout 项目地址:wobiancao/ImageNice9Layout 简介:不一样的 9 宫格图片展示,仿 Nice 首页图片列表 9 图样式,并实现拖拽效果 写在开头: ...
- Vue中实现拖拽效果
Vue2项目中遇到需求要求页面左侧部分实现拖拽效果 实现效果: 1665739151500 实现代码: 一.使用盒子包裹需要拖拽的区域,并绑定ref 二.使用$ref获取DOM信息 具体代码(这个方法 ...
最新文章
- 第八章-数据类、结构
- 流利说递交招股书:上半年亏1.8亿 王翌持股27.9%
- mysql 有always on么,mysql 关于时间类型的刨坑之路
- ORACLE expdp/impdp详解
- python如何对excel两个单元格求乘积_excel表格怎么求乘积_excel表格多个单元格怎么求积...
- haproxy开启日志功能
- 现在做抖音书单挣钱吗?
- 安卓 App 库存系统开发 基础版本
- UVA 1324 The Largest Clique 最大团(强连通分量,变形)
- 对二宝软件的NABCD分析
- 无法嵌入互操作类型“Microsoft.Office.Interop.Excel.ApplicationClass”。请改用适用的接口 ....
- 梁勇:展望 2017年商业智能BI 发展的趋势
- WPF利用NotifyIcon创建任务栏图标(菜鸟教程)
- 八数码问题【人工智能实验】
- [状压dp][BZOJ3717][PA2014]Pakowanie
- 红黑树和二叉树有什么区别?
- LaTeX给表格的一整行加删除线(横线)
- 第八届“图灵杯”NEUQ-ACM程序设计竞赛个人赛题解
- 【旅游类APP源码】开发者案例开源,走过路过不可错过!
- Python 让蔡徐坤在我的命令行里打篮球!