FiveTech Support Forums

FiveWin / Harbour / xBase community
Board index FiveWin para Harbour/xHarbour RunDlg32 y dialogos para pedir carpetas
Posts: 16
Joined: Thu Dec 01, 2005 04:15 PM
RunDlg32 y dialogos para pedir carpetas
Posted: Fri Jan 27, 2006 10:48 AM

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

Posts: 840
Joined: Thu Oct 13, 2005 07:05 PM
RunDlg32 y dialogos para pedir carpetas
Posted: Fri Jan 27, 2006 04:37 PM

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.
Posts: 16
Joined: Thu Dec 01, 2005 04:15 PM
RunDlg32 y dialogos para pedir carpetas
Posted: Mon Jan 30, 2006 12:37 PM

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

Posts: 16
Joined: Thu Dec 01, 2005 04:15 PM
RunDlg32 y dialogos para pedir carpetas
Posted: Mon Jan 30, 2006 03:05 PM
Ya está, me respondo solito y de paso para poner el parche o incluirlo de alguna manera en la Fw:
#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


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

Continue the discussion