文件拖拽的问题

wjjll123 2013-06-03 11:01:19
我知道如何将文件拖拽到一个dialog中。

但是现在项目的需求不仅仅是能把文件拖拽到程序中。还需要能把程序中list列表中显示的文件拖拽出来放到任意的系统中的某个目录下。

求解,应该怎么最?
...全文
189 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
向立天 2013-07-08
  • 打赏
  • 举报
回复
您好 我是本版版主 此帖已多日无人关注 请您及时结帖 如您认为问题没有解决可按无满意结帖处理 另外本版设置了疑难问题汇总帖 并已在版面置顶 相关规定其帖子中有说明 您可以根据规定提交您帖子的链接 如您目前不想结帖只需回帖说明 我们会删除此结帖通知 见此回复三日内无回应 我们将强制结帖 相关规定详见界面界面版关于版主结帖工作的具体办法
wjjll123 2013-06-06
  • 打赏
  • 举报
回复
求大牛来解答啊
见习学术士 2013-06-03
  • 打赏
  • 举报
回复
LISTCTRL 有 LVN_BEGINDRAG 事件
  • 打赏
  • 举报
回复
引用 3 楼 yaozhiyong110 的回复:
看都没看懂问题就随便发一通代码...
汗,还真是,只看了前面的,后面的没有看。。。 对不住了。 往回拖,复制文件之类的不难,难在鼠标显示。。。。
yaozhiyong110 2013-06-03
  • 打赏
  • 举报
回复
引用 1 楼 zjq9931 的回复:
对话框的Extened Styles中Accept Files选上。然后添加OnDropFiles事件,及相应的函数。

void CMyDlg::OnDropFiles(HDROP hDropInfo) 
{
	// TODO: Add your message handler code here and/or call default
	int iCount;
	char pcFilePath[MAX_PATH];
	int iPathLen;
	int i;
	iCount = DragQueryFile(hDropInfo, 0xffffffff, NULL, 0);

	if(iCount>1)   //限定一个,可以不做限定。
	{
		AfxMessageBox("一次只能检查一个工程哈!");
		return;
	}

	iPathLen = DragQueryFile(hDropInfo, 0, pcFilePath, MAX_PATH);
	for(i=iPathLen; i>0; i--)
	{
		if(pcFilePath[i]=='.')
		{
			break;
		}
	}
	if(0 == memicmp(&pcFilePath[i], ".XXX", strlen(".kop"))  ) //指定扩展名的。
	{
		m_strPath=pcFilePath;     //文件名显示在编辑框中,这里改成列表框 也是可以的。
		UpdateData(FALSE);
	}
	else
	{
		AfxMessageBox("请确认!");
		return;
	}

	CDialog::OnDropFiles(hDropInfo);
}

看都没看懂问题就随便发一通代码...
曾有一个人 2013-06-03
  • 打赏
  • 举报
回复
不懂,
  • 打赏
  • 举报
回复
对话框的Extened Styles中Accept Files选上。然后添加OnDropFiles事件,及相应的函数。

void CMyDlg::OnDropFiles(HDROP hDropInfo) 
{
	// TODO: Add your message handler code here and/or call default
	int iCount;
	char pcFilePath[MAX_PATH];
	int iPathLen;
	int i;
	iCount = DragQueryFile(hDropInfo, 0xffffffff, NULL, 0);

	if(iCount>1)   //限定一个,可以不做限定。
	{
		AfxMessageBox("一次只能检查一个工程哈!");
		return;
	}

	iPathLen = DragQueryFile(hDropInfo, 0, pcFilePath, MAX_PATH);
	for(i=iPathLen; i>0; i--)
	{
		if(pcFilePath[i]=='.')
		{
			break;
		}
	}
	if(0 == memicmp(&pcFilePath[i], ".XXX", strlen(".kop"))  ) //指定扩展名的。
	{
		m_strPath=pcFilePath;     //文件名显示在编辑框中,这里改成列表框 也是可以的。
		UpdateData(FALSE);
	}
	else
	{
		AfxMessageBox("请确认!");
		return;
	}

	CDialog::OnDropFiles(hDropInfo);
}

wjjll123 2013-06-03
  • 打赏
  • 举报
回复
引用 5 楼 xiaoc1026 的回复:
LISTCTRL 有 LVN_BEGINDRAG 事件
添加了这个消息的相应函数。但是我点击拖动的时候根本走不到这个函数里面。是不是还需要做什么?
wjjll123 2013-06-03
  • 打赏
  • 举报
回复
引用 4 楼 zjq9931 的回复:
[quote=引用 3 楼 yaozhiyong110 的回复:] 看都没看懂问题就随便发一通代码...
汗,还真是,只看了前面的,后面的没有看。。。 对不住了。 往回拖,复制文件之类的不难,难在鼠标显示。。。。[/quote] 额。。。那有没有好的方法?

15,979

社区成员

发帖
与我相关
我的任务
社区描述
VC/MFC 界面
社区管理员
  • 界面
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧