转载地址:http://blog.csdn.net/friendan/article/details/17457483
注:我测试的环境为VS2010+MFC,实现步骤简单3步即可。
第一步设置窗体的Accept Files属性为True
---------------------------------------------------------------------------------------------
第二步响应窗口消息WM_DROPFILES
---------------------------------------------------------------------------------------------------
第三步在窗口响应消息WM_DROPFILES函数中编写如下代码:
[cpp] view plaincopyprint?
//拖拽文件夹
void CFolderProtectDlg::OnDropFiles(HDROP hDropInfo)
{
// 定义一个缓冲区来存放读取的文件名信息
TCHAR szFolderPath[MAX_PATH];
// 通过设置iFiles参数为0xFFFFFFFF,可以取得当前拖动的文件数量,
// 当设置为0xFFFFFFFF,函数间忽略后面两个参数。
UINT count = DragQueryFile(hDropInfo, 0xFFFFFFFF, NULL, 0);
if(count>0)
{
for(UINT i=0; i<count; i++)
{
// 通过循环依次取得拖动文件的File Name信息,并把它添加到ListBox中
int pathLen = DragQueryFile(hDropInfo, i, szFolderPath, sizeof(szFolderPath)); //AfxMessageBox(filePath); SetDlgItemText(IDC_ET_FOLDER_PATH,szFolderPath); } } // 结束此次拖拽操作,并释放分配的资源 DragFinish(hDropInfo); CDialogEx::OnDropFiles(hDropInfo); }
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
效果截图:
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
通过以上步骤,就可实现拖曳文件到窗体时,编辑框显示拖动文件路径。