欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

选择根目录,自动给其他编辑框添加根目录下的文件及文件夹路径

程序员文章站 2022-03-07 20:19:55
就如下图,我只选择了根目录,其他的编辑框,下拉框都是自动选取的,省了一个一个选的时间我的根目录下的文件结构如下代码如下void CVideoCutDlg::OnBnClickedRootdir(){// TODO: 在此添加控件通知处理程序代码CString m_strFileOut = _T(""); //初始化适应UnicodeTCHAR szSelected[MAX_PATH];//用来存放文件夹路径 BROWSEINFO bi;LPITEMIDLIST pidl...

就如下图,我只选择了根目录,其他的编辑框,下拉框都是自动选取的,省了一个一个选的时间
选择根目录,自动给其他编辑框添加根目录下的文件及文件夹路径

我的根目录下的文件结构如下

选择根目录,自动给其他编辑框添加根目录下的文件及文件夹路径选择根目录,自动给其他编辑框添加根目录下的文件及文件夹路径

代码如下

void CVideoCutDlg::OnBnClickedRootdir()
{
	// TODO: 在此添加控件通知处理程序代码
	CString m_strFileOut = _T("");  //初始化适应Unicode

	TCHAR szSelected[MAX_PATH];//用来存放文件夹路径  

	BROWSEINFO bi;

	LPITEMIDLIST pidl;

	bi.hwndOwner = this->m_hWnd;

	bi.pidlRoot = NULL;

	bi.pszDisplayName = szSelected;

	bi.lpszTitle = _T("选择输出文件路径");

	bi.ulFlags = BIF_RETURNONLYFSDIRS;

	bi.lpfn = NULL;

	bi.lParam = NULL;

	bi.iImage = NULL;

	if ((pidl = SHBrowseForFolder(&bi)) != NULL)

	{

		if (SUCCEEDED(SHGetPathFromIDList(pidl, szSelected))) //得到文件夹的全路径,不要的话,只得本文件夹名  

		{
			m_strFileOut = szSelected;  	//获得文件夹的全路径
			CString rootDir;
			rootDir = m_strFileOut;
			USES_CONVERSION;
			char* fileName2 = T2A(rootDir);//读取需要分离的图片的路径CString->char*
			std::vector <CString>  rootNames;//用来保存图片的名字	
			readImgNamefromFile(fileName2, rootNames);//读入图片名字到数组
			 testerNum= rootNames[0].Mid(3,rootNames[0].Find(_T("-"))-3);
			 CString select= rootNames[0].Mid( rootNames[0].Find(_T(".")) - 6, 2);
			 CString cutPath = _T("D:\\VideoSaveFolder");
	 		 CString cutP= cutPath+_T("\\")+_T("sub")+testerNum;
			 char* fileName3 = T2A(cutP);//读取需要分离的图片的路径CString->char*
			 std::vector <CString>  cutPathNames;//用来保存图片的名字	
			 readImgNamefromFile(fileName3, cutPathNames);//读入图片名字到数组
			 if (select == _T("01"))
			 {
				 m_Box.SetCurSel(0);
				 SetDlgItemText(IDC_EDIT2, cutP+_T("\\")+cutPathNames[2]);
			 }
			 else if (select == _T("02"))
			 {
				 m_Box.SetCurSel(1);
				 SetDlgItemText(IDC_EDIT2, cutP + _T("\\") + cutPathNames[4]);
			 }
			 else if (select == _T("03"))
			 {
				 m_Box.SetCurSel(2);
				 SetDlgItemText(IDC_EDIT2, cutP + _T("\\") + cutPathNames[0]);
			 }
			 else if (select == _T("04"))
			 {
				 m_Box.SetCurSel(3);
				 SetDlgItemText(IDC_EDIT2, cutP + _T("\\") + cutPathNames[1]);
			 }
			 else
			 {
				 m_Box.SetCurSel(4);
				 SetDlgItemText(IDC_EDIT2, cutP + _T("\\") + cutPathNames[3]);
			 }
			if (rootNames.size() == 3)
			{
				SetDlgItemText(IDC_EDIT6, rootDir + _T("\\") + rootNames[0]);
				SetDlgItemText(IDC_EDIT8, rootDir + _T("\\") + rootNames[2]);
				SetDlgItemText(IDC_EDIT1, rootDir + _T("\\") + rootNames[1]);
				SetDlgItemText(IDC_EDIT7, _T(""));
				SetDlgItemText(IDC_EDIT4, testerNum);
			}
			if (rootNames.size() == 4)
			{
				SetDlgItemText(IDC_EDIT6, rootDir + _T("\\") + rootNames[0]);
				SetDlgItemText(IDC_EDIT8, rootDir + _T("\\") + rootNames[2]);
				SetDlgItemText(IDC_EDIT1, rootDir + _T("\\") + rootNames[1]);
				SetDlgItemText(IDC_EDIT7, rootDir + _T("\\") + rootNames[3]);
				SetDlgItemText(IDC_EDIT4, testerNum);
			}
		}
	}
	SetDlgItemText(IDC_EDIT9, m_strFileOut);
}
void readImgNamefromFile(char* fileName, vector <CString> &imgNames)

{

	// vector清零 参数设置

	imgNames.clear();

	WIN32_FIND_DATA file;

	int i = 0;

	char tempFilePath[MAX_PATH + 1];

	char tempFileName[50];

	// 转换输入文件名

	sprintf_s(tempFilePath, "%s/*", fileName);

	// 多字节转换

	WCHAR   wstr[MAX_PATH] = { 0 };

	MultiByteToWideChar(CP_ACP, 0, tempFilePath, -1, wstr, sizeof(wstr));

	// 查找该文件待操作文件的相关属性读取到WIN32_FIND_DATA

	HANDLE handle = FindFirstFile(wstr, &file);

	if (handle != INVALID_HANDLE_VALUE)

	{

		FindNextFile(handle, &file);

		FindNextFile(handle, &file);

		// 循环遍历得到文件夹的所有文件名	

		do

		{

			sprintf_s(tempFileName, "%s", fileName);

			imgNames.push_back((file.cFileName));

			//	imgNames[i].Insert(0, 1);

			i++;

		} while (FindNextFile(handle, &file));

	}

	FindClose(handle);

}

本文地址:https://blog.csdn.net/ningmengshuxiawo/article/details/107283201