1- 新建一个基于对话框的MFC工程;
2- 多余控件删掉;
3- 拖一个列表框到主对话框中;
4- 点击主对话框右键,在弹出菜单,选择属性, Accept File 修改为 True。
5- 右健主对话框,在弹出菜单中,选择类向导。点击消息,在消息下的编辑框中输入 DropFiles,再下面的列表框中就会显示 WM_DROPFILES 消息,双点它就会移到右边,
然后右边有一个” 编辑代码“点击它。
6- 自动转到 WM_DROPFILES 消息处理函数,然后添加代码,如下所示:
void CDemoDlg::OnDropFiles(HDROP hDropInfo)
{
// TODO: 在此添加消息处理程序代码和/或调用默认值
// 获取列表框指针
CListBox *pListbox = (CListBox *)GetDlgItem(IDC_LIST1);
pListbox->ResetContent();// 清空列表框内容
// 取得被拖动文件的数目
int nCount=DragQueryFile(hDropInfo,-1,NULL,0);
// 遍历打印到列表框中
for(int i=0; i< nCount; i++)
{
// 获得拖曳的第i个文件的文件名
WCHAR szFilePath[MAX_PATH];
DragQueryFile(hDropInfo,i,szFilePath,MAX_PATH);
// 打印到列表框中
CString strText(szFilePath);
strText += L"\n";
pListbox->AddString(strText);
}
CDialogEx::OnDropFiles(hDropInfo);
}
总结:
1- 设置主对话框属性,让它支持拖拽功能
2- 添加 WM_DROPFILES 消息处理函数进行处理
3- DragQueryFile 获取拖拽文件个数
4- DragQueryFile 获取文件路径,第二个参数是文件索引编号