Page 1 of 1
RunDlg32 y dialogos para pedir carpetas
Posted: Fri Jan 27, 2006 10:48 am
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
Posted: Fri Jan 27, 2006 4:37 pm
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
Posted: Mon Jan 30, 2006 12:37 pm
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
Posted: Mon Jan 30, 2006 3:05 pm
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