1、选择文件(单个或多个)
bool CMyDlg::OnButtonSelectFile(const CString strDefPath, vector<CString>& vecFileNames)
{
int nFileType = 0;
CString strFilter = _T("EXCEL文件(*.xls;*.xlsx)|*.xls;*.xlsx||");
if (nFileType == 0)
{
strFilter = _T("(*.shp)|*.shp||");
}
else if (nFileType== 1)
{
strFilter = _T("(*.mdb)|*.mdb||");
}
bool bRet = false;
if (nFileType == 0)
{
CFileDialog openFileDlg(TRUE, NULL, NULL, OFN_FILEMUSTEXIST |OFN_HIDEREADONLY|OFN_ALLOWMULTISELECT, strFilter);
DWORD MAXFILE = 2562;
openFileDlg.m_ofn.nMaxFile = MAXFILE;
TCHAR* pcFile = new TCHAR[MAXFILE];
openFileDlg.m_ofn.lpstrFile = pcFile;
openFileDlg.m_ofn.lpstrFile[0] = NULL;
if(openFileDlg.DoModal() == IDOK)
{
POSITION pos = openFileDlg.GetStartPosition();
while(pos != NULL)
{
CString strFile = openFileDlg.GetNextPathName(pos);
if (strFile.Trim().IsEmpty())
{
continue;
}
vecFileNames.push_back(strFile);
}
if (vecFileNames.size() % 2 != 0)
{
AfxMessageBox(_T("shp格式必须选择偶数个文件!"));
bRet = false;
}
else
{
bRet = true;
}
}
}
else
{
CFileDialog openFileDlg(TRUE, NULL, NULL, OFN_FILEMUSTEXIST |OFN_HIDEREADONLY, strFilter);
openFileDlg.m_ofn.lpstrInitialDir = strDefPath;
if (openFileDlg.DoModal() == IDOK)
{
vecFileNames.push_back(openFileDlg.GetPathName());
bRet = true;
}
}
return bRet;
}
2、选择文件夹
void CTestDlg::OnBnClickedBtnSeldir()
{
TCHAR szFolderPath[MAX_PATH] = {
0};
CString strFolderPath;
BROWSEINFO sInfo;
ZeroMemory(&sInfo, sizeof(BROWSEINFO));
sInfo.pidlRoot = 0;
sInfo.lpszTitle = _T("请选择一个文件夹:");
sInfo.ulFlags = BIF_DONTGOBELOWDOMAIN | BIF_RETURNONLYFSDIRS | BIF_EDITBOX;
sInfo.lpfn = NULL;
LPITEMIDLIST lpidlBrowse = SHBrowseForFolder(&sInfo);
if (lpidlBrowse != NULL)
{
if (SHGetPathFromIDList(lpidlBrowse,szFolderPath))
{
strFolderPath = szFolderPath;
}
}
if(lpidlBrowse != NULL)
{
CoTaskMemFree(lpidlBrowse);
}
GetDlgItem(IDC_EDIT1)->SetWindowTextW(strFolderPath);
}