VS2012 MFC 对话框支持文件拖拽功能

来源:互联网 发布:java方法名是什么 编辑:程序博客网 时间:2024/06/08 00:08

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 获取文件路径,第二个参数是文件索引编号
0 0