MFC实现文件拖拽功能

消息:WM_DROPFILES

函数:void OnDropFiles(HDROP hDropInfo)

 

添加方法:

情况一:

        如果控件已经提供允许文件拖拽功能,则直接按下图所示添加相应的消息函数,同时将Accpet Files属性设置为True

                   

 

       

情况二:

        如果控件没有提供文件拖拽功能,则需要以该控件对应的类作为基类,派生一个子类,此时子类就能够接受文件拖拽消息,与情况一一样的操作添加相应的消息函数,同时将Accpet Files属性设置为True

 

Demo:

说明:以CListCtrl为例子,默认情况下,CListCtrl是不接受文件拖拽功能的,因此,应该如情况二所说进行处理。

 

void CDropFileListCtrl::OnDropFiles(HDROP hDropInfo)
{
	// TODO: 在此添加消息处理程序代码和/或调用默认值
	WCHAR filePath[MAX_PATH];
	WIN32_FIND_DATA wfd;

	CString strFileName;
	CString strFileSize;
	CString strCreateTime;

	int nCounts = DragQueryFile(hDropInfo, 0xFFFFFFFF, NULL, 0);		//获取拖拽的总文件数
	for (int i = 0; i < nCounts; i++)
	{
		DragQueryFile(hDropInfo, i, filePath, sizeof(filePath)*2);
		FindClose(FindFirstFile(filePath, &wfd));

		strFileName = wfd.cFileName;
		strFileSize.Format(_T("%d"), wfd.nFileSizeLow);
		CTime time(wfd.ftCreationTime);
		strCreateTime = time.Format(_T("%Y-%m-%d %H:%M:%S"));

		InsertItem(i, strFileName);
		SetItemText(i, 1, strFileSize);
		SetItemText(i, 2, strCreateTime);
	}

	CListCtrl::OnDropFiles(hDropInfo);
}

 

工程运行结果:

 

工程代码下载链接:点击打开链接   http://download.csdn.net/detail/d704791892/5224786

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值