Wieder der Verzeichnis Dialog
-
Ich werd aus den FAQs nicht schlau, der Code funktioniert bei mir net
Kann mir denn keiner helfen
-
Mit den Angaben bestimmt nicht. (Stichwort: Kristallkugel)
-
CStoll schrieb:
(Stichwort: Kristallkugel)
Meine steht auf dem Fensterbrett aber zeigt nichts...
Ja. Ehrlich ich habe eine! Die hat mir mal ein Programmierer-Kollege (in Memoriam Carsten Witte) zu Weihnachten geschenkt, damit ich nicht mehr sagen kann "Meine Krsitallkugel ist kaputt/in Reparatur/etc." :xmas1: :xmas2:
-
hmpf stimmt
Ich bin in die FAQs gegangen und hab da diesen Code gefunden
http://www.c-plusplus.net/forum/viewtopic-var-t-is-39127-and-highlight-is-directory.html
, der den Verzeichniswahldialog aufrufen soll, hab ihn dreisterweise kopiert und über 30 Fehler erhaltenIch würds gerne mit SHBrowseForFolder machen, weil ich schon einen Großteil vom Code habe, aber das Programm gibt immer einen read-error aus. Muss ich irgendwo die max. Größe des Rückgabestrings angeben?
-
MAX_PATH hat als Größe von returnedString[] nicht den erhofften erfolg gebracht.
Ich bin verzweifelt!!!
hier die Kristallkugel
char returnedString[MAX_PATH]; BROWSEINFO browseinfo; browseinfo.hwndOwner = m_hWnd; browseinfo.pszDisplayName = returnedString; browseinfo.lpszTitle = "Wählen Sie einen Ordner"; browseinfo.ulFlags = BIF_EDITBOX; SHBrowseForFolder(&browseinfo);Liegts am m_hWnd
-
RobthaR schrieb:
Liegts am m_hWnd
Es liegt wohl eher daran, dass du wahllos Code aus dem Beispiel entfernt hast. Diese Zeile ist recht wichtig:
ZeroMemory ( (PVOID) &bInfo,sizeof (BROWSEINFO));
-
Danke, es funktioniert
Außerdem hab ich nicht kopiert, ich hab nur den Namen SHBrowseForFolder gesehen und im MSDN nachgeschaut
ZeroMemory kenn ich garnich, wofür is die gut?
-
Schonmal
RobthaR schrieb:
im MSDN nachgeschaut
?
-
ich benutz lieber "SecureZeromMemory(..)"
-
ARG

Warum zur Hölle gib eine Funktion, die dazu da ist, einen Ordner auszuwählen, den Namen und nicht den Pfad an, wie sinnlos ist das dennWie kann ich den ganzen Pfad auslesen
(also nicht Debug sondern C:\...\...\Debug)
-
void CProjRenameDlg::OnBnClickedPath() { BROWSEINFO bi; memset( &bi, 0, sizeof( BROWSEINFO ) ); bi.hwndOwner = AfxGetMainWnd()->GetSafeHwnd(); bi.lpszTitle = "Bitte wählen Sie ein Verzeichnis..."; bi.ulFlags = BIF_RETURNONLYFSDIRS | BIF_NEWDIALOGSTYLE; ITEMIDLIST* pList = SHBrowseForFolder( &bi ); if( pList ) { char szFolder[MAX_PATH+1]=""; if( SHGetPathFromIDList( pList, szFolder) ) m_strPath = szFolder; //m_strPath = CString-Element LPMALLOC pMalloc=NULL; if( S_OK == SHGetMalloc( &pMalloc ) ) { pMalloc->Free( pList ); pMalloc->Release(); } } CoUninitialize(); UpdateData(false); }Ich nutze das hier und das geht recht gut. Allerdings nutz ich das nur zum Pfad-ermitteln. (Ist ein Teil aus dem FAQ)
In Eigener Sache:
Wenn einer weiß,wie ich das nicht per Aufruf sondern Statisch erstellen kann (im Fenster enthalten) dann wäre ich sehr dankbar.
-
Alles klar, SHGetPathFromIDList hats gebracht
@Uruk-h4j: Vielleicht kannst du es mit einer Tree View und einem CFileFinder machen, der rekursiv sucht
http://www.c-plusplus.net/forum/viewtopic-var-t-is-39130.html
So würde !ich! es angehen