FileFilterClass.h
#pragma once
class CFileFilterClass
{
public:
CFileFilterClass();
~CFileFilterClass();
//浏览文件
void FileBrowser(CString & filePath, CWnd* pParentWnd, LPCTSTR fix);
//浏览文件夹
void FileDirBrowser(CString & filePath);
};
FileFilterClass.cpp
#include "stdafx.h"
#include "FileFilterClass.h"
#include <afxdlgs.h>
CFileFilterClass::CFileFilterClass()
{
}
CFileFilterClass::~CFileFilterClass()
{
}
/************************************************************************/
/* 方法名称: FileDirBrowser
/* 方法全称: CFileFilterClass::FileDirBrowser
/* 参数: CString & filePath 获取到的文件目录路径
/* 返回值: void
/* 说明: 获取到浏览文件目录的路径
/************************************************************************/
void CFileFilterClass::FileDirBrowser(CString & filePath)
{
filePath = _T("");
BROWSEINFO bi;
WCHAR Buffer[512];
//初始化入口参数bi开始
bi.hwndOwner = NULL;
bi.pidlRoot = NULL;
bi.pszDisplayName = Buffer;//此参数如为NULL则不能显示对话框
bi.lpszTitle = L"选择路径";
bi.ulFlags = BIF_RETURNONLYFSDIRS;
bi.lpfn = NULL;
bi.iImage = 0;
//初始化入口参数bi结束
LPITEMIDLIST pIDList = SHBrowseForFolder(&bi);//调用显示选择对话框
if (pIDList)//选择到路径(即:点了确定按钮)
{
SHGetPathFromIDList(pIDList, Buffer);
//取得文件夹路径到Buffer里
filePath = Buffer;//将路径保存在一个CString对象里
}
return;
}
/************************************************************************/
/* 方法名称: FileBrowser
/* 方法全称: CFileFilterClass::FileBrowser
/* 参数: CString & filePath 文件路径
/* 返回值: void
/* 说明: 获取到浏览的文件路径
/************************************************************************/
void CFileFilterClass::FileBrowser(CString & filePath, CWnd* pParentWnd, LPCTSTR fix=_T("exe"))
{
// 设置过滤器
//TCHAR szFilter[] = _T("链接库文件(*.dll)|*.dll|所有文件(*.*)|*.*||");
CString szFiler ;
szFiler.Format(_T("文件(*.%s)|*.%s|所有文件(*.*)|*.*||"), fix, fix);
// 构造打开文件对话框
CFileDialog fileDlg(true, fix, NULL, 0, szFiler, pParentWnd);
// 显示打开文件对话框
if (IDOK == fileDlg.DoModal())
{
// 如果点击了文件对话框上的“打开”按钮,则将选择的文件路径显示到编辑框里
filePath = fileDlg.GetPathName();
}
}