消息: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