SoloCodigo

Programación General => C/C++ => C++ Builder => Mensaje iniciado por: rompecabezas en Miércoles 16 de Diciembre de 2009, 15:18

Título: abrir una ventana de exploracion (file browser)
Publicado por: rompecabezas en Miércoles 16 de Diciembre de 2009, 15:18
Hay alguna instruccion en c++ que me permita abrir una ventana de exploracion?

Tengo un boton "examinar", y quiero que al apretarlo se me abra una ventana que me permita recorrer el sistema de ficheros y seleccionar un archivo.

Alguna sugerencia? gracias!
Título: Re: abrir una ventana de exploracion (file browser)
Publicado por: lair en Viernes 18 de Diciembre de 2009, 00:15
Hola.

builder tiene una pestania que se llama dialog, de esta puedes tomar un openfiledialog no re cuerdo bien el nombre de componente pero es algo asi

suerte
Título: Re: abrir una ventana de exploracion (file browser)
Publicado por: rompecabezas en Viernes 18 de Diciembre de 2009, 11:40
gracias! si es ese... ahora solo me falta saber como utilizarlo, jeje

donde puedo cambiar el directorio raiz por defecto?

si es que no tengo ni idea...
Título: Re: abrir una ventana de exploracion (file browser)
Publicado por: Dante_2010 en Lunes 21 de Diciembre de 2009, 03:16
Hola mi estimado,procedo a pasarte el codigo que yo uso para abrir este dialogo estandart :comp:

Citar
char pstrFileName[256];    //la ruta del fichero
                   char pstrFileTitle[256]; //el titulo del documento a abrir
                   static OPENFILENAME ofn ; // la estructura que se utiliza (nota 1)

//Lo siguiente sera en este orden:
//1)Descripicion del fichero a buscar
//2)la extencion de ejemplo
//3)la extension real
//4)otros tipos de ficheros separados por

                   static TCHAR szFilter[] = TEXT ("Text Files (*.TXT)*.txt")  
                               TEXT ("ASCII Files (*.ASC)*.asc")
                               TEXT ("All Files (*.*)*.*") ;
                               ofn.lStructSize       = sizeof (OPENFILENAME) ; //tamaño de la estructura
                               ofn.hwndOwner         = hDlg ; //el nombre del HWND en el procedure
                               ofn.hInstance         = NULL ; //la instancia de la aplicacion(poner NULL)
                                ofn.lpstrFilter       = szFilter ;//los parametros de la estructura szFilter
                                ofn.lpstrCustomFilter = NULL ;//alguna especificacion que desconosco
                                ofn.nMaxCustFilter    = 0 ;
                                ofn.nFilterIndex      = 0 ;
// La ruta del directorio inicial(NULL es el directorio defecto)
                                ofn.lpstrFile         = NULL ;
                                ofn.nMaxFile          = MAX_PATH ;
//el nombre del archivo a abrir por defecto
                                ofn.lpstrFileTitle    = NULL ;          
                                ofn.nMaxFileTitle     = MAX_PATH ;
                                ofn.lpstrInitialDir   = NULL ;
                                ofn.lpstrTitle        = NULL ;
 // Las banderas de formato,revisar en la API Win32
                                ofn.Flags             = 0 ;                                            
                                ofn.nFileOffset       = 0 ;
                                ofn.nFileExtension    = 0 ;
//la extencion del archivo por defecto
                                ofn.lpstrDefExt       = TEXT ("txt") ;
                                ofn.lCustData         = 0L ;
                                ofn.lpfnHook          = NULL ;
                                ofn.lpTemplateName    = NULL ;
//la ventana padre de este cuadro de dialogo estandart
                                ofn.hwndOwner         = hDlg ;
//las dos variables del principio
                                ofn.lpstrFile         = pstrFileName ;
                                ofn.lpstrFileTitle    = pstrFileTitle;
//flags para tratar el cuadro de dialogo
                                ofn.Flags             = OFN_HIDEREADONLY | OFN_CREATEPROMPT ;
//funcion final para pasar los parametros a la estructura y almacenarlos
                                GetOpenFileName (&ofn) ;

nota 1:la razon de que sea static es que la estructura la declare dentro de un switch  :ph34r:

nota 2:esto puede ser utilizado en muchos lugares,por ejemplo en WinMain,luego de crear la ventana,y antes de mostrarla
o inclusive y mejor aun dentro de un WndProc( LRESULT CALLBACK WndProc(HWND hWnd,UINT iMsg,WPARAM wParam,LPARAM lParam))
o dentro de un dlg proc (BOOL CALLBACK dlgProc(lo mismo que wndProc)) :clown:

espero que te sea util,cualquier consulta a las ordenes :hola:  :hola:  :hola:
Título: Re: abrir una ventana de exploracion (file browser)
Publicado por: rompecabezas en Lunes 21 de Diciembre de 2009, 10:22
gracias!