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

MFC Discussion :

MFC Dialogue de Choix de répertoire


Sujet :

MFC

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé Avatar de rabobsky
    Inscrit en
    Novembre 2003
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 123
    Par défaut MFC Dialogue de Choix de répertoire
    Salut,

    je cherche à utilser une fenêtre du type CFileDialog pour récupérer un répertoire et non un fichier. Je n'ai pas réussit à trouver mon bonheur sur ce lien car il faut que je choisisse un fichier pour que le répertoire soit récupéré.
    http://c.developpez.com/faq/vc/?page...etCurentFolder
    Moi ce que je voudrais c'est pouvoir choisir un répertoire directement.

    Merci pour le coup de main!

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055

  3. #3
    Membre confirmé Avatar de rabobsky
    Inscrit en
    Novembre 2003
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 123
    Par défaut
    Cet exemple est trop compliqué je trouve, je ne comprends pas du tout...
    j'ai trouvé un exemple de Microsoft qui marche:
    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
     
    	LPMALLOC pMalloc;
    	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;
    		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 .
    				//DoingSomethingUseful(pszBuffer);
    			}
    			// Free the PIDL allocated by SHBrowseForFolder.
    			pMalloc->Free(pidl);
    		}
    		// Release the shell's allocator.
    		pMalloc->Release();
    	}
    Mais maintenant j'ai un autre problème, il m'est impossible de mettre un répertoire source avant l'ouverture de la page. A ce que je comprends de la documentation il faut que j'affecte ca avec l'attribut mais le format de ce truc est le lpcitemidlist... je veux bien mais je ne trouve aucune imformation sur comment affecter cette variable avec par exemple le nom de répertoire "C:\".

    Je trouve que c'est vraiment trop mal documenté. Est ce que quelqu'un peut illuminer ma lanterne?

    Merci beaucoup

  4. #4
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Par défaut
    si tu regardais d'un peu plus pres mon exemple c'est traité ....

  5. #5
    Membre confirmé Avatar de rabobsky
    Inscrit en
    Novembre 2003
    Messages
    123
    Détails du profil
    Informations forums :
    Inscription : Novembre 2003
    Messages : 123
    Par défaut
    en fait j'ai réussi à faire marcher l'exemple que tu m'as donné aussi mais je ne suis pas allé plus loin dans la logique de faire débuter la page sur c:\

    j'ai essayé : et et d'ailleurs quand je vois cette partie de code :
    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
        else
        {
            LPITEMIDLIST  pIdl = NULL;
            IShellFolder* pDesktopFolder;
            char          szPath[MAX_PATH];
            OLECHAR       olePath[MAX_PATH];
            ULONG         chEaten;
            ULONG         dwAttributes;
     
            strcpy(szPath, (LPCTSTR)strRootFolder);
            if (SUCCEEDED(SHGetDesktopFolder(&pDesktopFolder)))
            {
                MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, szPath, -1, olePath, MAX_PATH);
                pDesktopFolder->ParseDisplayName(NULL, NULL, olePath, &chEaten, &pIdl, &dwAttributes);
                pDesktopFolder->Release();
            }
            bi.pidlRoot = pIdl;
        }
    pour moi tout ce que l'on donne comme valeur à pidlRoot c'est NULL...

    il n'est à aucun moment changé.

Discussions similaires

  1. Réponses: 3
    Dernier message: 23/04/2016, 12h32
  2. afficher boite de dialogue avec choix oui/non
    Par arnogef dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 02/12/2006, 12h06
  3. Installation et choix de répertoire
    Par ABDOU71 dans le forum Installation, Déploiement et Sécurité
    Réponses: 3
    Dernier message: 15/09/2006, 10h27
  4. [MFC]dialogues qui s'initialisent mal
    Par Tsunamis dans le forum MFC
    Réponses: 4
    Dernier message: 25/03/2004, 12h57
  5. Réponses: 7
    Dernier message: 24/02/2004, 04h30

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