SoloCodigo

Programación General => C/C++ => Visual C++ => Mensaje iniciado por: sam147 en Miércoles 9 de Marzo de 2005, 11:31

Título: Seleccionar Carpeta De Un Dialogo.
Publicado por: sam147 en Miércoles 9 de Marzo de 2005, 11:31
Hola a todos,
   Tengo un problema y es que no encuentro la manera de crear un diágolo para que un usuario selecione una caperta y luego yo operar sobre esa carpeta.
   Cuando queria trabajar sobre un archivo seleccionado por el usuario lo hacia mediante...

CFileDialog dialogFich(false,"",NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, filtro);

if(dialogFich.DoModal()!=IDOK)return 0;

Pero no consigo ver la manera de hacer lo mismo para que el usuario selecione una carpeta.

Muchas gracias.  :D
Título: Re: Seleccionar Carpeta De Un Dialogo.
Publicado por: Diodo en Miércoles 9 de Marzo de 2005, 11:56
Hola

En esta pagina tienes varios ejemplos:

http://www.codeguru.com/Cpp/W-D/dislog/dia...lectingfolders/ (http://www.codeguru.com/Cpp/W-D/dislog/dialogforselectingfolders/)

espero que te sea de ayuda

un saludo  :hola:   :D
Título: Re: Seleccionar Carpeta De Un Dialogo.
Publicado por: sam147 en Miércoles 9 de Marzo de 2005, 15:49
Muchas gracias Diodo !!!  ;)
   Voy a pegarme con ello a ver si consigo solucionarlo.  :comp:
Saludos  :hola:
Título: Re: Seleccionar Carpeta De Un Dialogo.
Publicado por: sam147 en Jueves 10 de Marzo de 2005, 12:53
Problema solucionado !!!  :D

Explico como lo he realizado por si a alguien le puede servir...

Al final he utilizado la funcion SHBrowseForFolder, que es la
que recomiendo Microsoft para seleccionar una carpeta desde
un dialgo.

void CDescargarArchivo::OnFileOpen()
{
typedef char StringType[MAX_PATH];
BROWSEINFO bi;
StringType Folder;
StringType FullPath;
char Title[] = "Selecciona el Directorio Destino";

// Initialization code for the BROWSEINFO struct:
bi.hwndOwner = this->m_hWnd;
bi.pszDisplayName = Folder;
bi.lpszTitle = Title;
bi.ulFlags = BIF_RETURNONLYFSDIRS;
bi.pidlRoot = NULL;
bi.lpfn = NULL;

if (SHGetPathFromIDList(::SHBrowseForFolder(&bi), FullPath))
{
m_sGuardarComo = FullPath; // Here we assume the m_Dir is a variable
associated with an edit box
UpdateData(FALSE); // Put data into edit boxes (or do whatever you
want to do with it)
}

}

Saludos.