最近搞个小工具,为了方便用就做了个可以拖拽文件到话框的功能。
然后生成文件默认用原始文件名,问题就来了:拖拽得到的文件名是全路径的,无法获取不包含文件后缀的文件名。
具体问题描述:
例如文件在:D:\test.txt,那么拖拽得到的字符就是 “D:\\test.txt”,而我们只想得到 test。
所以我这边用了如下代码来获取 test
void CTxt2ExcelDlg::OnDropFiles(HDROP hDropInfo)
{
//获取文件路径并显示到编辑框中
CString filename; //文件名不包含后缀。
TCHAR filePath[MAX_PATH] = { 0 };
//单文件操作,第二参数置0,第三个参数返回文件路径
DragQueryFile(hDropInfo, 0, filePath, MAX_PATH - 1);
SetDlgItemText(IDC_EDIT_TEXT, filePath);
filename = filePath;
filename = filename.Mid(filename.ReverseFind('\\') + 1, ((filename.ReverseFind('.') - filename.ReverseFind('\\'))-1));//用CString 成员函数来获取。
DragFinish(hDropInfo);
CDialogEx::OnDropFiles(hDropInfo);
}