//================================================================================= /// GetPictures /// /// This function collects all the pictures the user chooses into a vector. //================================================================================= void CSLICSuperpixelsDlg::GetPictures(vector<string>& picvec) { CFileDialog cfd(TRUE,NULL,NULL,OFN_OVERWRITEPROMPT,L"*.*|*.*|",NULL); cfd.m_ofn.Flags |= OFN_ALLOWMULTISELECT; //cfd.PostMessage(WM_COMMAND, 40964, NULL); CString strFileNames; cfd.m_ofn.lpstrFile = strFileNames.GetBuffer(2048); cfd.m_ofn.nMaxFile = 2048; BOOL bResult = cfd.DoModal() == IDOK ? TRUE : FALSE; strFileNames.ReleaseBuffer(); //if(cfd.DoModal() == IDOK) if( bResult ) { POSITION pos = cfd.GetStartPosition(); while (pos) { CString imgFile = cfd.GetNextPathName(pos); PictureHandler ph; string name = ph.Wide2Narrow(imgFile.GetString()); picvec.push_back(name); } } else return; }
//=========================================================================== /// BrowseForFolder /// /// The main function //=========================================================================== bool CSLICSuperpixelsDlg::BrowseForFolder(string& folderpath) { IMalloc* pMalloc = 0; if(::SHGetMalloc(&pMalloc) != NOERROR) return false; BROWSEINFO bi; memset(&bi, 0, sizeof(bi)); bi.hwndOwner = m_hWnd; bi.lpszTitle = L"Please select a folder and press 'OK'."; LPITEMIDLIST pIDL = ::SHBrowseForFolder(&bi); if(pIDL == NULL) return false; TCHAR buffer[_MAX_PATH]; if(::SHGetPathFromIDList(pIDL, buffer) == 0) return false; PictureHandler pichand; folderpath = pichand.Wide2Narrow(buffer); folderpath.append("\\"); return true; }