IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Visual C++ Discussion :

Ouvrir un répertoire pour y lister/afficher les fichiers.


Sujet :

Visual C++

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 41
    Par défaut Ouvrir un répertoire pour y lister/afficher les fichiers.
    Salut à tous,
    J'essaie en ce moment de créer un diaporama d'images à partir d'un répertoire donné par l'utilisateur.
    Ce diapo est réalisé au sein d'une application MFC avec VS 2005.

    Pour le moment, j'arrive à faire mon diaporama grâce au code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
    void CMainFrame::OnActionsRepertoire()
    {
    	// TODO : ajoutez ici le code de votre gestionnaire de commande
    	CFileFind find;
    	SetCurrentDirectory ("f:\\mes documents\\mes images");
    	BOOL bWorking=find.FindFile("*.jpg");
    	while(bWorking){
    		bWorking=find.FindNextFileA();
    		AfxMessageBox(find.GetFileName());
    		m_graph.SetMediaFile(find.GetFilePath());
    		m_graph.PlayGraph();
    	}
    	find.Close();
    }
    Celui ci permet de parcourir un répertoire que je donne directement dans le code de la fonction et d'afficher toutes les images ainsi que leur nom.

    Cependant,ce que je n'arrive pas à faire pour l'instant, c'est que ce soit l'utilisateur qui, lorsqu'il clique sur le bouton de diapo, puisse choisir lui meme son répertoire, et que celui ci soit passé en argument à SetCurrentDirectory.

    En fait, j'aimerais savoir s'il y a une fonction qui fasse la meme chose que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    CFileDialog fileDlg(TRUE, NULL, NULL,   OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT|OFN_ALLOWMULTISELECT,
    "All Files|*.*||",this);
    mais pour les fichiers. Ce que je peux deja faire, c'est afficher une boite de dialogue pour que l'utilisateur entre à la main le répertoire, mais c'est beaucoup moins bien :/.

    Y a t-il une fonction en c++ ou dans les MFC qui permette de faire cela ?
    Merci !

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    391
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 391
    Par défaut
    bonjour
    Le code suivant permet de choisir un repertoire par l'ouverture d'un fenetre .
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    LPMALLOC pMalloc; 
    /* Gets the Shell's default allocator */ 
    if (::SHGetMalloc(&pMalloc) == NOERROR) 
    { 
        BROWSEINFO bi; 
        char pszBuffer[MAX_PATH]; 
        LPITEMIDLIST pidl; 
        // Get help on BROWSEINFO struct - it's got all the bit settings. 
        bi.hwndOwner = GetSafeHwnd(); 
        bi.pidlRoot = NULL; 
        bi.pszDisplayName = pszBuffer; 
        bi.lpszTitle = _T("Select a Starting Directory"); 
        bi.ulFlags = BIF_RETURNFSANCESTORS | BIF_RETURNONLYFSDIRS |BIF_NEWDIALOGSTYLE; 
        bi.lpfn = NULL; 
        bi.lParam = 0; 
     
        // This next call issues the dialog box. 
        if ((pidl = ::SHBrowseForFolder(&bi)) != NULL) 
        { 
            if (::SHGetPathFromIDList(pidl, pszBuffer)) 
           { 
                // At this point pszBuffer contains the selected path */. 
              // ici tu peux recuperer le rep dans pszBuffer		  
            } 
            // Free the PIDL allocated by SHBrowseForFolder. 
            pMalloc->Free(pidl); 
        } 
        // Release the shell's allocator. 
        pMalloc->Release(); 
    }
    cordialement

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2006
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 41
    Par défaut
    Salut,

    Merci pour ce bout de code, ca marche nickel!
    Mais ce code a l'air assez orienté C (utilisation de free par exemple), il y a t-il une version plus orientée c++?

    Sinon, quoi correspond l'objet LPMALLOC? Je n'arrive pas à voir dans quelle but il est présent ici.

Discussions similaires

  1. [Linux] Algorithme pour lire et afficher les nombres
    Par newou dans le forum x86 32-bits / 64-bits
    Réponses: 1
    Dernier message: 20/04/2008, 23h18
  2. lister tous les fichiers avec des différences entre deux répertoires.
    Par contremaitre dans le forum Shell et commandes GNU
    Réponses: 2
    Dernier message: 13/03/2008, 15h24
  3. [VBA-E]Afficher les fichiers excel ouvert et leur onglets dispo pour les ouvrir
    Par anubisigfrid dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 12/03/2007, 22h52
  4. Réponses: 23
    Dernier message: 23/05/2006, 16h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo