Ordner auswählen
-
Hallo!
Versuche mittels SHBrowseForFolder einen Ordner auszuwählen, nur wird mir der Dialog nicht mal angezeigt. Weiß jemand woran das liegen könnte?
Danke,
lixiCString strFolder;
BROWSEINFO bi;
bi.lpszTitle = _T("Pick a Directory");
LPITEMIDLIST pidl = SHBrowseForFolder(&bi);
// TODO: Add your control notification handler code hereif ( pidl != 0 )
{
// get the name of the folder
TCHAR path[MAX_PATH];
if ( SHGetPathFromIDList ( pidl, path ) )
{
printf ( "Selected Folder: %s\n", path );
}// free memory used
IMalloc * imalloc = 0;
if ( SUCCEEDED( SHGetMalloc ( &imalloc )) )
{
imalloc->Free ( pidl );
imalloc->Release ( );
}
}
-
also bei mir funzt es so:
BROWSEINFO info = {0}; info.lpszTitle = "Select storing path:"; CString strCopyToPath; char cPfad[BUFFSIZE]; LPITEMIDLIST list = SHBrowseForFolder(&info); if(list != NULL) { if (!SHGetPathFromIDList(list, cPfad)) { Log ("invalid path"); return; } }
-
Hallo!
Danke Horst, der Dialog wird mir nun angezeigt. Aber leider stürzt mein Programm ab, wenn ich einen Ordner auswähle und auf O.K. drücke. Weißt du vielleicht auch zufällig oder jemand anderer wie ich das lösen kann?danke für deine Hilfe,
Lixi6
-
War mein blöder Fehler:
char cPfad[50];
wenn ich [1000] nehme geht sichs natürlich aus, mit 50 waren die pfade zu lang . Das macht man aber nicht so, oder?
Aber wenn ich [BUFFSIZE] nehme kann ich nicht kompilieren. Was soll ich tun?danke,
lixi6
-
definiere es mit MAX_PATH
-
Hallo!
Eines noch, bitte:
Und wie bekomme ich jetzt den ausgewählten Pfad in einen CSring?danke,
lixi
-
SHGetPathFromIDList() erwartet als zweiten Parameter nicht nur ein char, du kannst auch ein CString benutzen...
BROWSEINFO info = {0}; info.lpszTitle = "Select storing path:"; CString strCopyToPath; CString strPfad; LPITEMIDLIST list = SHBrowseForFolder(&info); if(list != NULL) { if (!SHGetPathFromIDList(list, strPfad)) { Log ("invalid path"); return; } }
In strPfad sollte nun der Pfad drinstehen...
Gruß
:: NoName ::
-
Hallo!
Ich habs so gemacht, wie du gesagt hast, da bekomme ich aber folgende Fehlermaldung: Cannot convert parameter 2 from CString to LPSTR. Trotzdem danke für deine Mühe.
CString strInputFolder
if (!SHGetPathFromIDList(list, strInputFolder))
{
AfxMessageBox("invalid path!");
return;
}
so hab ichs auch schon probiert:
if (!SHGetPathFromIDList(list, &strInputFolder))
{
AfxMessageBox("invalid path!");
return;
}
bekomme ich aber auch eine Fehlermeldung.
Hat irgendwer noch eine Idee?
Ein großes Dankeschön für eure Hilfe!
lixi
-
Hallo!
Ich hab's jetzt so probiert(siehe unten), funzt auch nicht, der String enthält nur ein undefinierbares Zeichen.
Ich weiß echt nicht mehr weiter, bitte um Hilfe!char cPath[1000];
BROWSEINFO info = {0};
info.lpszTitle = "Select storing path:";
LPITEMIDLIST list = SHBrowseForFolder(&info);if(list != NULL)
{
if (!SHGetPathFromIDList(list, cPath))
{
AfxMessageBox("invalid path!");
return;
}
}CString strPath;
strPath.Format("%c",cPath);
AfxMessageBox(strPath);
-
Schreib doch einfach den char mit einem Gleichheitszeichen in den CString.