[VC++] Choix d'un répertoire (Boite de Dlg)

Choix d'un répertoire (Boite de Dlg) [VC++] - Programmation

Marsh Posté le 02-03-2002 à 18:11:16    

je suis en train de faire un boite de dialogue qui possède un bouton qui permet de choisir un repertoire qui sera utilisé dans la suite l'application.
 
Pour le moment, j'utilise le code suivant :
 
 bi.pidlRoot       = NULL;
 bi.pszDisplayName = szString;
 bi.lpszTitle   = "Choisir un repertoire";
 bi.ulFlags        = BIF_RETURNONLYFSDIRS;
 bi.lpfn           = NULL;
 bi.lParam         = 0;
 bi.iImage         = 0;
 
 pidl = SHBrowseForFolder(&bi);
 if (pidl != NULL)
 {
  IMalloc*   pm;
 
  SHGetPathFromIDList( pidl, szPathName );
  SHGetMalloc(&pm);
  if (pm)
  {
   pm->Free(pidl);
   pm->Release();
  }
  m_EditPathName.SetWindowText( szPathName );
 }  
 
Mais ça ne me satisfait pas encore. En effet j'aimerai pouvoir spécifier le répertoire par défaut qui est activé lorsque l'on ouvre la boite de dialogue pour choisir son rep. Parce que pour le moment, elle s'ouvre toujours sur le bureau.
Apparement on spéficier des repertoires classique "program files, mes documents, etc..." mais je n'arrive à trouver comment spécifier mon répertoire à moi par défaut.
 
Je sais qu'il faut remplir le champ bi.pidlRoot avec un ITEMIDLIST, mais j'ai pas encore compris comme ça marche.  
Es-ce que quelqu'un aurai un petit exemple ?

Reply

Marsh Posté le 02-03-2002 à 18:11:16   

Reply

Marsh Posté le 02-03-2002 à 18:20:49    

bon ben, je vais faire les questions réponses ;)
Je cherchais depuis 1 heure et je viens de trouver en 1s sur codeguru...
 
// On remplace ligne  
 bi.lpfn     = NULL;
//par
 bi.lpfn     = BrowseCallbackProc;
 
 
// On défini la callback suivante :
 
static int __stdcall BrowseCallbackProc(HWND hwnd,UINT uMsg,LPARAM lp, LPARAM pData)
{
 TCHAR szDir[MAX_PATH] = {NULL};
 if (uMsg == BFFM_INITIALIZED)
 {
  //  Browse dialog initialized - set it to our default folder
       wsprintf(szDir, "%s","c:\\mon rep" );
   
  // put initial directory here      
  SendMessage(hwnd,BFFM_SETSELECTION,TRUE,(LPARAM)szDir);
 }      
 return 0;
}
 
 
et voila, c'est gagné

Reply

Marsh Posté le 02-03-2002 à 18:22:43    

leander a écrit a écrit :

bon ben, je vais faire les questions réponses ;)
Je cherchais depuis 1 heure et je viens de trouver en 1s sur codeguru...
 
// On remplace ligne  
 bi.lpfn     = NULL;
//par
 bi.lpfn     = BrowseCallbackProc;
 
 
// On défini la callback suivante :
 
static int __stdcall BrowseCallbackProc(HWND hwnd,UINT uMsg,LPARAM lp, LPARAM pData)
{
 TCHAR szDir[MAX_PATH] = {NULL};
 if (uMsg == BFFM_INITIALIZED)
 {
  //  Browse dialog initialized - set it to our default folder
       wsprintf(szDir, "%s","c:\\mon rep" );
   
  // put initial directory here      
  SendMessage(hwnd,BFFM_SETSELECTION,TRUE,(LPARAM)szDir);
 }      
 return 0;
}
 
 
et voila, c'est gagné  




 
codeguru ... quelle adresse ?


---------------
Visitez mon site : http://www.jujubarbare.linux-fan.com
Reply

Marsh Posté le 02-03-2002 à 18:24:54    

www.codeguru.com .........................

Reply

Marsh Posté le 02-03-2002 à 18:35:30    

leander a écrit a écrit :

www.codeguru.com .........................  




 
thx ;-)


---------------
Visitez mon site : http://www.jujubarbare.linux-fan.com
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed