Home   Artículos   Recursos   Foros   
Artíclos recientes publicados en Latindevelopers:

Visual C++: NSDoubleEdit: Un control para el manejo de números decimales en Visual C++.
Visual C++: Implementando una Calculadora en Visual C++
Visual C++: CCommandLine: Una clase para el uso de la linea de comando
Visual C++: Una clase para el manejo del Registro


puedo configurar CFileDialog?

Aqui programadores en la plataforma Win32 con Visual C++ de Microsoft...

Moderador: latindeveloper

puedo configurar CFileDialog?

Notapor jmcordoba el Mar Abr 10, 2007 5:28 am

Sería ideal conseguir mostrar un CFile dialog pero sin la opción de poder subir de nivel. Digamos que debería poder mostrar el contenido de la carpeta windows (tanto sus carpetas como archivos) pero no dejar acceder a C:\

Alguien tiene alguna idea¿? un saludo para tod@s!!
jmcordoba
Novato
Novato
 
Mensajes: 10
Registrado: Mié Nov 15, 2006 9:48 am

Re: puedo configurar CFileDialog?

Notapor latindeveloper el Mar Abr 10, 2007 6:42 pm

Hola,

Los Dialogos comunes de Windows (Common Dialogs) en Visual C++ son clases, al igual que la clase CDialog (y decenas de otras mas ) pueden derivarse en otras para agregarles o quitarles alguna funcionalidad.

Por ejemplo, revisa el articulo siguiente:

http://www.codeproject.com/dialog/David ... Dialog.asp

Ése articulo sobreescribe varias funcionalidades de la clase CFileDialog, incluso "esconde" el boton de "Crear Nueva Carpeta", en la seccion:

Código: Seleccionar todo
// 'hwndToolBar' is a handle to the ToolbarWindow32 control.
// 'TB_BTN_NEWFOLDER' is the ID for the "New Folder" button.

TBBUTTONINFO tbinfo;

tbinfo.cbSize = sizeof( TBBUTTONINFO );
tbinfo.dwMask = TBIF_STATE;
tbinfo.fsState = TBSTATE_HIDDEN | TBSTATE_INDETERMINATE;

::SendMessage( hwndToolBar, TB_SETBUTTONINFO,
    (WPARAM)TB_BTN_NEWFOLDER,   // which button
    (LPARAM)&tbinfo );          // new button state


En ese caso el boton que tendrías que ocultar es el que tiene TB_BTN_UPONELEVEL .

Como este otro articulo:

http://www.codeproject.com/dialog/customize_dialog.asp

Saludos.
Imagen
Avatar de Usuario
latindeveloper
Administrador
Administrador
 
Mensajes: 1061
Registrado: Lun Jun 02, 2003 8:29 pm
Ubicación: Peru

Notapor jmcordoba el Vie Abr 13, 2007 1:57 am

Te agradezco mucho tu respuesta...el artículo me ha servido para "casi" todo jeje ya que el último detalle es que no puedo visualizar las carpetas que tengo dentro de la ruta que le indico que me abra...no se si has trabajado con esto pero sería de gran ayuda ya que me he leido la declaración de la clase:

http://msdn2.microsoft.com/en-us/library/wh5hz49d(VS.80).aspx

y no he sabido encontrar el flag o la propiedad que me está capando o no habilitando que se muestren carpetas...

un saludo latindeveloper!! eres un crack!!
jmcordoba
Novato
Novato
 
Mensajes: 10
Registrado: Mié Nov 15, 2006 9:48 am

Notapor latindeveloper el Sab Abr 14, 2007 10:32 am

Para que CFileDialog inicie en una carpeta que le indiques debes asignarle la ruta directamente a la variable lpstrInitialDir que esta en el parametro m_ofn de la clase CFileDialog .

http://msdn2.microsoft.com/en-us/library/ms646839.aspx


Por ejemplo:

Código: Seleccionar todo
char * ruta = "c:\mi ruta";

CFileDialog dlgFile(...);
dlgFile.m_ofn.lpstrInitialDir = ruta;

dlgFile.DoModal();
Imagen
Avatar de Usuario
latindeveloper
Administrador
Administrador
 
Mensajes: 1061
Registrado: Lun Jun 02, 2003 8:29 pm
Ubicación: Peru


Volver a Visual C++

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados