Club Builder - Foros de discusión Club Builder
Foro de C++Builder en español
 
 FAQFAQ   BuscarBuscar   MiembrosMiembros   Grupos de UsuariosGrupos de Usuarios   RegistrarseRegistrarse 
 PerfilPerfil   Entra para ver tus mensajes privadosEntra para ver tus mensajes privados   EntrarEntrar 

OpenDialog

 
Publicar nuevo tema   Responder al tema    Foros de discusión -> Consultas
Ver tema anterior :: Ver tema siguiente  
Autor Mensaje
Mensaje    Asunto: OpenDialog Responder citando

Alquien conoce la funcion del Api de Windows 2000 que abre el cuadro de dialogo de abrir fichero como en el bloc de notas del 2000, con una barras de botones outlook a la izquierda con favoritos, etc?

Lo he visto en otros programas y estos llaman exactamente al mismo dialogo que el bloc de notas.

Gracias.

Volver arriba
Mensaje    Asunto: OpenDialog Responder citando

Hola Jose Antonio:

Aquí tienes como hacerlo. Solo dos requisitos importantes para que funcione tal como esta:
1.- Tienes que compilarlo en Windows 2000 porque al compilar se hacen comprobaciones de versión en las cabeceras.
2.- Compilarlo con la versión 5 de C++Builder porque necesita que los ficheros de cabecera esten actualizados con las estructuras necesarias en Windows 2000.

code:

OPENFILENAME ofn;
OSVERSIONINFO ver;
char szFileName[MAX_PATH] = "\0"; // nombre archivo actual
char szInitialDir[MAX_PATH] = "c:\\"; // directorio inicial

ZeroMemory(&ofn, sizeof(ofn));

// Comprueba que se esta ejecutando bajo Windows 2000
ver.dwOSVersionInfoSize = sizeof(OSVERSIONINFO);
GetVersionEx(&ver);
if ( (ver.dwPlatformId==VER_PLATFORM_WIN32_NT) && (ver.dwMajorVersion>=5) )
ofn.lStructSize = sizeof(ofn);
else
ofn.lStructSize = OPENFILENAME_SIZE_VERSION_400;

ofn.hwndOwner = Handle;
ofn.lpstrFilter = "Archivos de texto (*.txt)\0*.txt";
ofn.nFilterIndex = 1;
ofn.lpstrFile = szFileName;
ofn.nMaxFile = sizeof(szFileName);
ofn.lpstrInitialDir = szInitialDir;
ofn.lpstrTitle = "Abrir archivo de texto";
ofn.Flags = OFN_EXPLORER | OFN_HIDEREADONLY;
ofn.lpstrDefExt = "*.txt";
//"Descomenta" la linea de abajo si quieres que en Win2000 salga como en Win95
//ofn.FlagsEx = OFN_EX_NOPLACESBAR;

if ( GetOpenFileName(&ofn) )
ShowMessage(szFileName);


Tal como esta una vez lo has compilado con BCB5 en Win2000 da igual que lo ejecutes luego en cualquier versión de Windows ya que comprueba si se esta ejecutando o no en Win2000 y en caso de que no muestra el dialogo tipico de Win95/98.

En caso de que no tengas el BCB5 y quieres que te muestre como hacerlo para que funcione en cualquier versión de C++Builder y aunque no lo compiles directamente en Win2000 avisame.

Más información en la versión actualizada de la ayuda del API en http://msdn.microsoft.com que puedes consultar sin necesidad de bajarla.

Saludos.
_Leo

Volver arriba
Mensaje    Asunto: OpenDialog Responder citando

Funciona correctamente Leo, gracias.
Volver arriba
Mostrar mensajes de anteriores:   
Cambiar a:  
No puedes publicar temas nuevos en este foro
No puedes responder a temas en este foro
No puedes editar tus mensajes en este foro
No puedes borrar tus mensajes en este foro
No puedes votar en las encuestas de este foro


Hosting WordPress Indedmedia desde 3,99 €
© 2002–2026 Club Builder · Funciona con phpBB.