在MFC中如何获取文件和文件夹的路径

本文详细介绍了在VC++编程环境中使用CFileDialog获取文件路径的方法,并提供了获取文件夹路径的代码示例。同时,文章还讨论了如何在后续操作中使用这些路径。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在VC++编程中,获取文件的路径很容易通过CFileDialog来实现,代码示例如下:

	CFileDialog dlg(
		TRUE,"*.csv",NULL,
		OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST|OFN_HIDEREADONLY,
		"csv files(*.csv)|*.csv|All Files(*.*)|*.*||",NULL
		);
	dlg.m_ofn.lpstrTitle = "Open Arousal File";  //the title of the openfile dailog
	if(dlg.DoModal()!= IDOK)   //if don't get the arousal file
		return;
	arousalPath = dlg.GetPathName();  //get the arousal address
	UpdateData(FALSE);


通过上面的代码就可以获得一个文件的绝对路径,但有时我们需要获得文件夹的路径以便后续的操作,相对来说,获取文件夹的路径要复杂一点。代码如下:

	TCHAR szPath[_MAX_PATH];
	BROWSEINFO bi;
	bi.hwndOwner = GetSafeHwnd();
	bi.pidlRoot = NULL;
	bi.lpszTitle = "Please select the input path";
	bi.pszDisplayName = szPath;
	bi.ulFlags = BIF_RETURNONLYFSDIRS;
	bi.lpfn = NULL;
	bi.lParam = NULL;

	LPITEMIDLIST pItemIDList = SHBrowseForFolder(&bi);

	if(pItemIDList)
	{
		if(SHGetPathFromIDList(pItemIDList,szPath))
		{
			InputPath = szPath;
			//videoPath = inputImgPath;
		}

		//use IMalloc interface for avoiding memory leak
		IMalloc* pMalloc;
		if( SHGetMalloc(&pMalloc) != NOERROR )
		{
			TRACE(_T("Can't get the IMalloc interface\n"));
		}

		pMalloc->Free(pItemIDList);
		if(pMalloc)
			pMalloc->Release();
		UpdateData(FALSE);
	}
	else 
		InputPath = "";


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值