Visualizzazione dei risultati da 1 a 5 su 5
  1. #1

    [VC++] Selezione Cartella

    Ciao a tutti!
    dovrei realizzare una tasto che premuto mi apre una specie di esplora risporse che mi permette di selezionare una cartella...

    Poi io sfrutterò il path della cartella restituito... per salvare dei file al suo interno.
    Grazie
    VKR VVoVe:

  2. #2
    Utente di HTML.it L'avatar di netarrow
    Registrato dal
    Apr 2004
    Messaggi
    1,425
    Io solitamente uso l'API GetOpenFileName .

    C'è anche un esempio:

    codice:
    OPENFILENAME ofn;       // common dialog box structure
    char szFile[260];       // buffer for file name
    HWND hwnd;              // owner window
    HANDLE hf;              // file handle
    
    // Initialize OPENFILENAME
    ZeroMemory(&ofn, sizeof(ofn));
    ofn.lStructSize = sizeof(ofn);
    ofn.hwndOwner = hwnd;
    ofn.lpstrFile = szFile;
    //
    // Set lpstrFile[0] to '\0' so that GetOpenFileName does not 
    // use the contents of szFile to initialize itself.
    //
    ofn.lpstrFile[0] = '\0';
    ofn.nMaxFile = sizeof(szFile);
    ofn.lpstrFilter = "All\0*.*\0Text\0*.TXT\0";
    ofn.nFilterIndex = 1;
    ofn.lpstrFileTitle = NULL;
    ofn.nMaxFileTitle = 0;
    ofn.lpstrInitialDir = NULL;
    ofn.Flags = OFN_PATHMUSTEXIST | OFN_FILEMUSTEXIST;
    
    // Display the Open dialog box. 
    
    if (GetOpenFileName(&ofn)==TRUE) 
        hf = CreateFile(ofn.lpstrFile, GENERIC_READ,
            0, (LPSECURITY_ATTRIBUTES) NULL,
            OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,
            (HANDLE) NULL);
    szFile conterrà il path + il nome del file, se ha te serve solo il path basterà fare una substringa che si ferma all'ultimo \.

    Se stai usando MFC non saprei aiutarti e non conosco l'api che crea la FileDialog specifica per selezionare le cartelle.

    Imparare è un'esperienza, tutto il resto è solo informazione. (Albert Einstein)

  3. #3
    Utente di HTML.it L'avatar di Xadoom
    Registrato dal
    Dec 2002
    Messaggi
    1,491
    Credo che quello che stai cercando sia proprio questo:
    SHBrowseForFolder()
    Qui trovi la descrizione e a fondo pagina anche un esempio di utilizzo.
    http://msdn.microsoft.com/library/de...eforfolder.asp
    Windows Xp
    [Java]
    [PHP]Notepad++
    [Fortran90-77] elf90 g77
    [C++ /WinAPI] DevC++ VisualC++

  4. #4
    Originariamente inviato da Xadoom
    Credo che quello che stai cercando sia proprio questo:
    SHBrowseForFolder()
    Qui trovi la descrizione e a fondo pagina anche un esempio di utilizzo.
    http://msdn.microsoft.com/library/de...eforfolder.asp
    Con le MFC se non ricordo male devi creare un oggetto di tipo CFileDialog (che estende CDialog) ed usare uno dei suoi metodi per mostrare il dialogo stesso.Controllati la documentazione della classe.I metodi di CFileDialog non sono altro che degli wrapper per l'API che ti ha consigliato netarrow.Ciao
    Il centro dell'attenzione non è sempre un buon posto in cui trovarsi

    Mai discutere con uno stupido, la gente potrebbe non capire la differenza. (O. W.)

  5. #5
    Utente di HTML.it L'avatar di Xadoom
    Registrato dal
    Dec 2002
    Messaggi
    1,491
    Ho usato semplicemente le API di windows facendo così:
    codice:
    BROWSEINFO bi;
    LPITEMIDLIST pidl;
                                    
     bi.hwndOwner = hwnd;
     bi.pidlRoot = NULL;
     bi.pszDisplayName = 0;
     bi.lpszTitle = TEXT("Imposta la directory");
     bi.ulFlags = BIF_RETURNFSANCESTORS | BIF_RETURNONLYFSDIRS;
     bi.lpfn = NULL;
     bi.lParam = 0;
                    
     pidl = SHBrowseForFolder(&bi);
     SHGetPathFromIDList(pidl,szDir);
    Funziona benissimo e fa comparire una di quelle finestrelle in cui si può selezionare la directory.
    Windows Xp
    [Java]
    [PHP]Notepad++
    [Fortran90-77] elf90 g77
    [C++ /WinAPI] DevC++ VisualC++

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.