#include "pch.h" #include "GUITool.h" CString GUITool::selectFolder(CString title) { TCHAR szFolderPath[MAX_PATH] = { 0 }; CString strFolderPath = TEXT(""); BROWSEINFO sInfo; ::ZeroMemory(&sInfo, sizeof(BROWSEINFO)); sInfo.pidlRoot = 0; sInfo.lpszTitle = title; 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; } CString GUITool::selectImage() { TCHAR szBuffer[MAX_PATH] = { 0 }; OPENFILENAME ofn = { 0 }; ofn.lStructSize = sizeof(ofn); ofn.lpstrFilter = _T("All\0*.PNG\0*.JPG");//ҪѡÔñµÄÎļþºó׺ ofn.nFilterIndex = 1; ofn.lpstrFile = szBuffer;//´æ·ÅÎļþµÄ»º³åÇø ofn.nMaxFile = sizeof(szBuffer) / sizeof(*szBuffer); ofn.nFilterIndex = 0; ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST; BOOL bSel = GetOpenFileName(&ofn); if (bSel) { return szBuffer; } return 0; } CString GUITool::selectExcel() { TCHAR szBuffer[MAX_PATH] = { 0 }; OPENFILENAME ofn = { 0 }; ofn.lStructSize = sizeof(ofn); ofn.lpstrFilter = _T("All\0*.xls");//ҪѡÔñµÄÎļþºó׺ ofn.nFilterIndex = 1; ofn.lpstrFile = szBuffer;//´æ·ÅÎļþµÄ»º³åÇø ofn.nMaxFile = sizeof(szBuffer) / sizeof(*szBuffer); ofn.nFilterIndex = 0; ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST; BOOL bSel = GetOpenFileName(&ofn); if (bSel) { return szBuffer; } return 0; } std::list GUITool::selectMulImages() { std::list paths; TCHAR szBuffer[MAX_PATH] = { 0 }; OPENFILENAME ofn = { 0 }; TCHAR szPath[MAX_PATH]; int nLen = 0; TCHAR* p; ofn.lStructSize = sizeof(ofn); ofn.lpstrFilter = _T("All\0*.PNG\0*.JPG");//ҪѡÔñµÄÎļþºó׺ ofn.nFilterIndex = 1; ofn.lpstrFile = szBuffer;//´æ·ÅÎļþµÄ»º³åÇø ofn.nMaxFile = sizeof(szBuffer) / sizeof(*szBuffer); ofn.Flags = OFN_FILEMUSTEXIST | OFN_ALLOWMULTISELECT | OFN_HIDEREADONLY | OFN_EXPLORER; BOOL bSel = GetOpenFileName(&ofn); if (bSel) { lstrcpyn(szPath, szBuffer, ofn.nFileOffset); szPath[ofn.nFileOffset] = '\0'; nLen = lstrlen(szPath); if (szPath[nLen - 1] != '\\') { lstrcat(szPath, _T("\\")); } p = szBuffer + ofn.nFileOffset; while (*p) { CString name(p); CString dir(szPath); CString path; path.Format(_T("%s%s"), dir, name); paths.push_back(path); //ÒÆÖÁÏÂÒ»¸öÎļþ p += lstrlen(p) + 1; } } return paths; }