GetOpenFileName mit OFN_ALLOWMULTISELECT
-
Heiho
ich kann ohne probleme ein verzeichnis auslesen und alle dateien anzeigen lassen
aber ich hab ein problem damit wenn ich selber mehere dateien auswaehle, das ich alle aufliste
void COwnClass::OnBrowseFiles(){ int BufferSize = 32*1024; OPENFILENAME ofn; ZeroMemory(&ofn, sizeof(OPENFILENAME)); ofn.lStructSize = sizeof (OPENFILENAME); ofn.hwndOwner = m_hWnd; ofn.lpstrFilter = _T("All files (*.*)"); TCHAR *tcBuffer = new TCHAR[BufferSize]; SecureZeroMemory(tcBuffer, BufferSize); ofn.lpstrFile = tcBuffer; ofn.nMaxFile = BufferSize; _tstring folder = settings.DefaultFolder(); ofn.lpstrInitialDir = folder.c_str(); ofn.Flags = OFN_EXPLORER|OFN_ALLOWMULTISELECT|OFN_FILEMUSTEXIST|OFN_PATHMUSTEXIST; if(GetOpenFileName(&ofn)==TRUE){ WIN32_FIND_DATA FindFileData; HANDLE hFind = FindFirstFile(ofn.lpstrFile+ofn.nFileOffset, &FindFileData); m_lcList.AddItem(FindFileData.cFileName); m_lcList.AddSubItem(1, FindFileData.cFileName); while(FindNextFile(hFind, &FindFileData) != 0){ m_lcList.AddItem(FindFileData.cFileName); m_lcList.AddSubItem(1, FindFileData.cFileName); } FindClose(hFind); } }bei einer einzelnen datei klappt es problemlos, aber sobald ich mehere auswaehle bekomm ich immer nur die letzte ausgewaehlte datei
zu huelf
-
Das mit ner Dateienumeration zu lösen, ist doch irgendwie unsinnig: Da weißt Du doch gar nicht, was der Benutzer markiert hat und was nicht ?! Machs einfach so:
// ... TCHAR szSelectedFile[(MAX_PATH * 100) + 1]; OPENFILENAME ofnOpenFile; // ... ofnOpenFile.lpstrFile = szSelectedFile; ofnOpenFile.nMaxFile = (MAX_PATH * 100) + 1; // ... if(GetOpenFileName(&ofnOpenFile)) { TCHAR szFilePath[MAX_PATH + 1]; UINT uiOffset = ofnOpenFile.nFileOffset; lstrcpy(szFilePath, szSelectedFile); lstrcat(szFilePath, TEXT("\\")); while(szSelectedFile[uiOffset] != 0) { lstrcpy(&szFilePath[ofnOpenFile.nFileOffset], &szSelectedFile[uiOffset]); uiOffset += lstrlen(&szSelectedFile[uiOffset]) + 1; // szFilePath dann im Folgenden verarbeiten // ... } } // ...
-
// wegedit wegen bloedheit
vielen dank, das war genau das was ich brauchte - haette ja mal genauer hinschaun sollen / koennen
danke {=
-
, hatte gestern keine Zeit mehr auf dein letzten Post zu antworten (also als er noch nicht editiert war), aber hat sich ja dann wohl geklärt
.