转载地址:http://blog.csdn.net/friendan/article/details/17457483


注:我测试的环境为VS2010+MFC,实现步骤简单3步即可。

第一步设置窗体的Accept Files属性为True

vc文件拖曳_文件拖曳 mfc DragQueryFi

---------------------------------------------------------------------------------------------

第二步响应窗口消息WM_DROPFILES

vc文件拖曳_文件拖曳 mfc DragQueryFi_02

---------------------------------------------------------------------------------------------------

第三步在窗口响应消息WM_DROPFILES函数中编写如下代码:


[cpp] view plaincopyprint?vc文件拖曳_文件拖曳 mfc DragQueryFi_03vc文件拖曳_文件拖曳 mfc DragQueryFi_04

  1. //拖拽文件夹  

  2. void CFolderProtectDlg::OnDropFiles(HDROP hDropInfo)  

  3. {  

  4. // 定义一个缓冲区来存放读取的文件名信息

  5.     TCHAR szFolderPath[MAX_PATH];  

  6. // 通过设置iFiles参数为0xFFFFFFFF,可以取得当前拖动的文件数量,

  7. // 当设置为0xFFFFFFFF,函数间忽略后面两个参数。

  8.     UINT count = DragQueryFile(hDropInfo, 0xFFFFFFFF, NULL, 0);  

  9.     if(count>0)  

  10.     {          

  11.         for(UINT i=0; i<count; i++)  

  12.         {  

        // 通过循环依次取得拖动文件的File Name信息,并把它添加到ListBox中

            int pathLen = DragQueryFile(hDropInfo, i, szFolderPath, sizeof(szFolderPath));              //AfxMessageBox(filePath);              SetDlgItemText(IDC_ET_FOLDER_PATH,szFolderPath);          }      }  // 结束此次拖拽操作,并释放分配的资源    DragFinish(hDropInfo);        CDialogEx::OnDropFiles(hDropInfo);  }  


-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


效果截图:

vc文件拖曳_文件拖曳 mfc DragQueryFi_05

--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


通过以上步骤,就可实现拖曳文件到窗体时,编辑框显示拖动文件路径。