RunDlg32 y dialogos para pedir carpetas

Post Reply
carlosmora
Posts: 16
Joined: Thu Dec 01, 2005 4:15 pm

RunDlg32 y dialogos para pedir carpetas

Post by carlosmora »

Estoy buscando la forma de cambiar la cgetdir para que me muestre el diálogo que aparece en el XP.
Supuse que estaria en rundlg32, por que es ese el parametro del WinExec() que aparece en el codigo fuente, pero no encuentro referencias por ningun lado.
Lo que más me sorprendió es que San Google me trajo un solo resultado!
Alguien me puede orientar al respecto?
Quisiera saber donde puedo saber algo respecto de rundlg32, donde esta el exe, donde lo busco, cuales son los parametros y como hago para usar el dialogo de obtener directorio nuevo, con el boton de crear carpeta y eso.

Saludos
R.F.
Posts: 840
Joined: Thu Oct 13, 2005 7:05 pm

Post by R.F. »

Si estas trabajando a 32 bits con (x)Harobur, no necesitas el RunDlg32, Todos los dialogos del sistema viene con look XP.

cGetDir, cGetFile, PrinterSetup, ChooseColor, ChooseFont, Msg... todos vienen con look XP
Saludos
R.F.
carlosmora
Posts: 16
Joined: Thu Dec 01, 2005 4:15 pm

Post by carlosmora »

Si pero no. La cosa esta en el uso del dialogo pero que incluya el boton de crear carpeta, y el edit para ingresar a mano el path. Si hay parametros de eso, necesitaria saber como ponerlos.
El cgetdir muestra un dialogo con el tree, un boton de aceptar y otro de cancelar, he visto en algunos instaladores de programas que hay mas posibilidades.

Saludos
carlosmora
Posts: 16
Joined: Thu Dec 01, 2005 4:15 pm

Post by carlosmora »

Ya está, me respondo solito y de paso para poner el parche o incluirlo de alguna manera en la Fw:
[code]
#pragma BEGINDUMP
#include "windows.h"
#include "hbapi.h"


#include <Windows.h>
#include <CommDlg.h>

#ifdef __FLAT__
#include <shlobj.h>
#endif

#define OFN_LONGNAMES 0x00200000
#define WF_WINNT 0x4000
#define LOGPIXELSX 88

BOOL IsWin95(VOID);

BOOL CALLBACK ComDlgHkFile(HWND hDlg, UINT uMsg,
WPARAM wParam, LPARAM lPar);

/*
static far BOOL b95Look = FALSE;
static far char SelDir[] = "Select directory";
static far char IniDir[] = ".\\";
static far char File[] = "__test__.tmp";
static far char Font[] = "MS Sans Serif";
static far int PixelX = 0;
static far char Driver[] = "DISPLAY";
*/

HB_FUNC( CGETDIR )
{
BROWSEINFO lpbi;
char lpstrTitle[ 512 ], lpstrDisplayName[ MAX_PATH ];
LPCITEMIDLIST lpIDList;

_bset( ( char * ) &lpbi, 0, sizeof( lpbi ) );

lpbi.hwndOwner = GetActiveWindow();
lpbi.lpszTitle = hb_parc( 1 );
lpbi.ulFlags = BIF_RETURNONLYFSDIRS + BIF_DONTGOBELOWDOMAIN + BIF_USENEWUI;
lpIDList = SHBrowseForFolder( &lpbi);

if( lpIDList )
{
SHGetPathFromIDList( lpIDList, lpstrDisplayName );
hb_retc( lpstrDisplayName );
}
else
hb_retc( "" );
}

#pragma ENDDUMP[/code]

lo agregado es el BIF_USENEWUI. Una tontera, pero habia que buscar...
Saludos
Post Reply