SoloCodigo

Programación General => C/C++ => Visual C++ => Mensaje iniciado por: spyfly en Martes 18 de Julio de 2006, 19:19

Título: Codigo Seleccion Archivo
Publicado por: spyfly en Martes 18 de Julio de 2006, 19:19
Queremos abrir una ventana de dialogo para seleccionar un archivo, lo queremos hacer de una manera estandar y tipica. Hemos descubierto esto :

   CFileDialog DlgGuardar(FALSE);

creemos que se puede hacer con esto pero no lo tenemos claro ¿alguien podria ayudarnos?¿existe un codigo tipico para hacer esto?.Un ejemplo nos vendria bién.

Un saludo. Gracias.
Título: Re: Codigo Seleccion Archivo
Publicado por: spyfly en Martes 18 de Julio de 2006, 20:53
Hemos hecho esto y parece que funciona, pero nos queda por defecto la ruta donde selecionamos el archivo, y queremos que nos quede la que teniamos antes (donde esta el programa).


   CString strRuta;
   
   CFileDialog DlgAbrir(TRUE); // llama al constructor

   // Definir los pares descripción|filtro
   DlgAbrir.m_ofn.lpstrFilter = "Ficheros de experiencias (*.txt)\0*.txt\0Todos los ficheros (*.*)\0*.*\0";
   // Definir el titulo
   DlgAbrir.m_ofn.lpstrTitle = "Seleccionar Archivo a Borrar";
   
   if ( DlgAbrir.DoModal() == IDOK )
   {
      // Visualizar el nombre del fichero en la caja de texto
      strRuta = DlgAbrir.GetPathName();
   }
Título: Re: Codigo Seleccion Archivo
Publicado por: inforsystem en Miércoles 19 de Julio de 2006, 05:05
Hola.

Existe una funcion API que se llama GetCurrentPath.
Saludos.
Título: Re: Codigo Seleccion Archivo
Publicado por: spyfly en Miércoles 19 de Julio de 2006, 08:00
Ya la hemos intentado usar pero no sabemos como funciona, ni los parametros que hay que pasar. ¿Alguien no hecha un mano?

Lo que nosotros queremos es seleccionar un archivo y meter la ruta de este en una cadena para que despues sea borrado, pero sin cambiar el directorio por defecto(Donde esta nuestro programa).

Un saludo. Gracias.
Título: Re: Codigo Seleccion Archivo
Publicado por: spyfly en Miércoles 19 de Julio de 2006, 08:42
Al final hemos utilizado esto y parece que nos realiza lo que buscabamos. Gracias por las indicaciones. Saludos.

   // TODO: Add your control notification handler code here
   CString Ruta;
   char RutaPpal[128];
   FILE *papelera;

   GetCurrentDirectory(128,RutaPpal);

   CFileDialog DlgAbrir(TRUE); // llama al constructor
   
   // Definir los pares descripción|filtro
   DlgAbrir.m_ofn.lpstrFilter = "Ficheros de experiencias (*.txt)\0*.txt\0Todos los ficheros (*.*)\0*.*\0";
   // Definir el titulo
   DlgAbrir.m_ofn.lpstrTitle = "Seleccionar Archivo a Borrar";

   if (DlgAbrir.DoModal()==IDOK)
   {
      // Visualizar el nombre del fichero en la caja de texto
      Ruta = DlgAbrir.GetPathName();
   }

   SetCurrentDirectory(RutaPpal);
   papelera=fopen("papelera.txt","a");
   fprintf(papelera,"%s",Ruta);
   fclose(papelera);
Título: Re: Codigo Seleccion Archivo
Publicado por: spyfly en Miércoles 19 de Julio de 2006, 12:33
Asi como lo tenemos recuerda la ultima ruta en la que estuve y al abrir de nuevo la ventana aparece ne ese directorio.
Se le puede indicar que la ventana aparezca por defecto en una ruta que nosotros le indiquemos y que no recuerde la ultima donde estuvo?


Gracias. Un saludo.
Título: Re: Codigo Seleccion Archivo
Publicado por: ivancp en Miércoles 19 de Julio de 2006, 16:46
Escribe esta linea antes del DoModal.
Código: Text
  1.  
  2. DlgAbrir.m_ofn.lpstrInitialDir = "E:\\TuRuta";
  3.  
Título: Re: Codigo Seleccion Archivo
Publicado por: spyfly en Miércoles 19 de Julio de 2006, 17:10
Hemos usado esto que tambien funciona, guardamos la ruta anterior y luego la volvemos a dejar como estaba.



antes de la llamada DoModal:

GetCurrentDirectory(128,RutaPpal);

despues de DoModal:

SetCurrentDirectory(RutaPpal);