CFileDialog文件对话框用法

2023-06-26,,

(1)选择文件

CFileDialog dlg(TRUE, _T("*.bmp"), NULL,
		OFN_FILEMUSTEXIST | OFN_PATHMUSTEXIST | OFN_HIDEREADONLY,
		_T("图片文件(*.bmp;*.png)|*.png;*.bmp| All Files (*.*) |*.*||"), NULL);
// 打开文件对话框的标题名
dlg.m_ofn.lpstrTitle = _T("选择图片");
	
if (dlg.DoModal() == IDOK)
{
    CString FilePathName = dlg.GetPathName(); //路径名+文件名
    CString FileName = dlg.GetFileName();  //文件名
    int Which = FileName.Find('.');
    CString OnlyFileName = FileName.Left(Which); //无扩展的文件名
    // 获取扩展名
    int nPos = FileName.ReverseFind('.');
    CString  csFileExtName = FileName.Right(FileName.GetLength() - nPos - 1); 
    m_strUserPicName = strUserName + _T(".") + csFileExtName;
    m_strUserPicPath = GetAppllicationPath() +_T("User\\")+ m_strUserPicName;
    BOOL ret = CopyFile(FilePathName, m_strUserPicPath,TRUE);
            
    CRect rt;
    m_picUserIcon.GetClientRect(&rt);
    this->InvalidateRect(rt);
}
else
{
    return;
}

(2)保存文件

CFileDialog dlg(FALSE, NULL, NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,
	_T("EXCEL文件(*.xlsx)|*.xlsx| All Files (*.*) |*.*||"), AfxGetMainWnd());

// 打开文件对话框的标题名
dlg.m_ofn.lpstrTitle = _T("输入导出的Excel文件名");

if (dlg.DoModal() == IDOK)
{
	CString FilePathName = dlg.GetPathName();     //路径名+文件名
	CString FileName     = dlg.GetFileName();     //文件名
	INT  index           = dlg.m_ofn.nFilterIndex;
	if (1 == index)
	{
		FilePathName += _T(".xlsx");
		USES_CONVERSION;
		if (_access(W2A(FilePathName), 0) == 0)
		{
			CString strQuery;
			strQuery.Format(_T("%s 已经存在,要替换掉吗?"), FilePathName);
			if (IDNO == ::MessageBox(NULL, strQuery, _T("文件覆盖"), 
			            MB_ICONQUESTION | MB_YESNO))
			{
                             //保存操作
			}
		}
	}
}
else
{
	return;
}

选择文件夹

CString CScale3DCTab2Dlg::SelFilePath()
{
	TCHAR           szFolderPath[MAX_PATH] = { 0 };
	CString         strFolderPath = TEXT("");

	BROWSEINFO      sInfo;
	::ZeroMemory(&sInfo, sizeof(BROWSEINFO));
	sInfo.pidlRoot = 0;
	sInfo.lpszTitle = _T("请选择生成的安装文件Install.exe的路径");
	sInfo.ulFlags = BIF_RETURNONLYFSDIRS | BIF_EDITBOX | BIF_DONTGOBELOWDOMAIN;
	sInfo.lpfn = NULL;

	// 显示文件夹选择对话框  
	LPITEMIDLIST lpidlBrowse = ::SHBrowseForFolder(&sInfo);
	if (lpidlBrowse != NULL)
	{
		// 取得文件夹名  
		if (::SHGetPathFromIDList(lpidlBrowse, szFolderPath))
		{
			strFolderPath = szFolderPath;
		}
	}
	if (lpidlBrowse != NULL)
	{
		::CoTaskMemFree(lpidlBrowse);
	}

	return strFolderPath;
}

《CFileDialog文件对话框用法.doc》

下载本文的Word格式文档,以方便收藏与打印。