Luis,
Se lo he comentado a Rao para saber su opinión.
Centrándonos ahora en el asunto de las imágenes:
Por favor muéstrame como creas esos botones. Algo que nos dé una pista de que pueda estar sucediéndote.
Aqui las aplicaciones funcionan bien
Luis,
Se lo he comentado a Rao para saber su opinión.
Centrándonos ahora en el asunto de las imágenes:
Por favor muéstrame como creas esos botones. Algo que nos dé una pista de que pueda estar sucediéndote.
Aqui las aplicaciones funcionan bien
Algo muy importante
Con base de datos grandes y medianas es mas rapido el manejo de MySql con ODBC que con la nueva clase de Fw para manejo directo de MySql
Ejemplo: simplemente pueden comparar y tomar tiempos, ODBC es mas de 3 veces rapido
#include "fivewin.ch"
REQUEST DBFCDX
//----------------------------------------------------------------------------//
function Main()
  local oODBC, oADO, oFWH
  local oQry, oRsADO, oRsFWH
  local nSecs, nODBCSecs, nADOSecs, nFWHSecs
  local cTable  := "custbig"
  RDDSETDEFAULT( "DBFCDX" )
  SET DELETED ON
  SET DATE ITALIAN
  SET CENTURY ON
  FWNumFormat( "A", .t. )
  ? "Connecting"
  oODBC   := TOdbc():New( "MYSQLANSI", "gnrao", "secret" )
  oADO   := FW_OpenAdoConnection( "MYSQL,localhost,fwh,gnrao,secret", .t. )
  FWCONNECT oFWH HOST "localhost" USER "gnrao" PASSWORD "secret" DATABASE "fwh"
  nSecs   := Seconds()
  MsgRun( "Reading table", "ODBC", { || ;
     oQry  := oOdbc:Query( "SELECT * FROM custbig" ), ;
     oQry:Open(), ;
     oQry:RecCount() } )
  nODBCSecs  := Seconds() - nSecs
  nSecs   := Seconds()
  MsgRun( "Reading Table", "ADO", { || oRsADO := FW_OpenRecordSet( oAdo, cTable ) } )
  nAdoSecs := Seconds() - nSecs
  MsgRun( "Reading table", "FWH-MARIADB", { || oRsFWH := oFwh:RowSet( cTable ) } )
  nFwhSecs := oRsFwh:nReadSecs
  XBROWSER oQry FASTEDIT SHOW SLNUM ;
   TITLE "Million Rows Read in " + cValToChar( nODBCSecs ) + " by ODBC" NOMODAL
  XBROWSER oRsADO FASTEDIT SHOW SLNUM ;
   TITLE "Million Rows Read in " + cValToChar( nADOSecs ) + " by ADO" NOMODAL
  XBROWSER oRsFWH FASTEDIT SHOW SLNUM ;
   TITLE "Million Rows Read in " + cValToChar( nFWHSecs ) + " by FWH-MARIADB"
  oODBC:End()
  oAdo:Close()
  oFwh:Close()
return nil
ODBC Â Â Â Â Â 138.17 seconds ( 2 minutes 18 seconds )
ADO Â Â Â Â Â Â 14.58 seconds
FWHMYSQL Â Â Â Â 3.78 secondsMaestro Antonio
Para ir descartando sustituà FiveHC32.Lib por la de la versión 11.05 y me salia un error de una funcion en C y la cree (GDIP_DRAWTEXT) y sirvió excelente
ahora revisando la function se agregó en gdipfwh.cpp, comparando hubo cambios en el .cpp con respecto a la version 11.05.
La idea es comparar para saber de esa librerÃa cual el el error pero para ustedes es mas facil saber que el error está por la winapi
Gracias.
Estamos revisándolo
gracias
Luis,
Aparte de tus PRGs y de FWH, estás enlazando algo más ?
Visual Studio te da algún aviso de sÃmbolo duplicado al enlazar ?
#include "FiveWin.ch"
function Main()
  local aBmp, oWnd, n, r, c, w, h
  w   := ScreenWidth() - 60
  h   := ScreenWidth() - 100
  aBmp  := DIRECTORYRECURSE( "c:\fwh\bitmaps\*.*" )
  r := 10
  c := 0
  DEFINE WINDOW oWnd
  for n := 1 to 1000
   @ r, c BTNBMP PROMPT cFileNoExt( aBmp[ n, 1 ] ) ;
     FILE aBmp[ n, 1 ] SIZE 36,42 PIXEL OF oWnd
   c  += 40
   if c > w
     r  += 45
     c  := 0
     if r > h
      EXIT
     endif
   endif
  next n
  ACTIVATE WINDOW oWnd MAXIMIZED
return nil#include "fivewin.ch"
function Main()
  local aBmp, oWnd, oBrush, n, r, c, w, h
  w   := ScreenWidth() - 70
  h   := ScreenHeight() - 80
  aBmp  := DIRECTORYRECURSE( "c:\fwh\bitmaps\*.*" )
  r := 10
  c := 0
  DEFINE BRUSH oBrush GRADIENT { { 1, CLR_WHITE, CLR_YELLOW } }
  DEFINE WINDOW oWnd BRUSH oBrush
  for n := 1 to 1000
   @ r, c BTNBMP PROMPT cFileNoExt( aBmp[ n, 1 ] ) ;
     FILE aBmp[ n, 1 ] SIZE 48,64 PIXEL OF oWnd 2007
   c  += 55
   if c > w
     r  += 70
     c  := 0
     if r > h
      EXIT
     endif
   endif
  next n
  ACTIVATE WINDOW oWnd MAXIMIZED
  RELEASE BRUSH oBrush
return nil@268,106 BTNBMP qBtnZN File "Imagenes\Zonas.bmp" Â Prompt "&Zonas" Â PIXEL OF oDlgCli Size 26,26 Font oFontBtn ACTION TabZonas() Â 2007@ECHO OFF
CLS
ECHO ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
ECHO ³ FiveWin for Harbour 16.05 (MSVC++) May  2016   Harbour development power ³Ü
ECHO ³ (c) FiveTech,1993-2015 for Microsoft Windows 9X/NT/200X/ME/XP/Vista/7/8/10 ³Û
ECHO ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙÛ
ECHO ÿ ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
if A%1 == A GOTO :SINTAX
if NOT EXIST %1.prg GOTO :NOEXIST
set oldpath=%path%
set oldinclude=%include%
set oldlib=%lib%
set oldlibpath=%libpath%
if exist "%ProgramFiles%\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" call "%ProgramFiles%\Microsoft Visual Studio 14.0\VC\vcvarsall.bat"
if exist "%ProgramFiles(x86)%\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" call "%ProgramFiles(x86)%\Microsoft Visual Studio 14.0\VC\vcvarsall.bat"
if "%FWDIR%" == "" set FWDIR=c:\fwhU
if "%HBDIR%" == "" set HBDIR=c:\harbour
ECHO Compiling...
@set fwh=%FWDIR%
@set hdir=%HBDIR%
@set hdirl=%hdir%\lib\vc32
del *.obj
del *.ppo
attrib %1.exe -r
%hdir%\bin\harbour otrasfun.prg /n /i%fwh%\include;%hdir%\include;%sdkdir%\include  /w0 /p %2 %3 > comp.log
%hdir%\bin\harbour %1 /n /i%fwh%\include;%hdir%\include;%sdkdir%\include /w0 /p %2 %3 > comp.log 2> warnings.log
IF ERRORLEVEL 1 GOTO COMPILEERROR
@type comp.log
@type warnings.log
rem "%VCINSTALLDIR%"bin\cl -TP -W3 -c /GS- /I%hdir%\include /GA %1.c otrasfun.c
"%VCINSTALLDIR%"bin\cl -TP -W3 -c /I%hdir%\include %1.c otrasfun.c
:ENDCOMPILE
IF EXIST %1.rc IF EXIST "%VCINSTALLDIR%"bin\rc "%VCINSTALLDIR%"bin\rc -r -d__FLAT__ %1
IF EXIST %1.rc IF NOT EXIST %1.res rc -r -d__FLAT__ %1
echo %1.obj otrasfun.obj > msvc.tmp
echo %fwh%\lib\FiveH32.lib %fwh%\lib\FiveHC32.lib %fwh%\lib\libmysql32.lib  >> msvc.tmp
echo %hdirl%\hbrtl.lib  >> msvc.tmp
echo %hdirl%\hbvm.lib  >> msvc.tmp
echo %hdirl%\gtgui.lib  >> msvc.tmp
echo %hdirl%\hblang.lib  >> msvc.tmp
echo %hdirl%\hbmacro.lib  >> msvc.tmp
echo %hdirl%\hbrdd.lib  >> msvc.tmp
echo %hdirl%\rddntx.lib  >> msvc.tmp
echo %hdirl%\rddcdx.lib  >> msvc.tmp
echo %hdirl%\rddfpt.lib  >> msvc.tmp
echo %hdirl%\hbsix.lib  >> msvc.tmp
echo %hdirl%\hbdebug.lib  >> msvc.tmp
echo %hdirl%\hbcommon.lib  >> msvc.tmp
echo %hdirl%\hbpp.lib  >> msvc.tmp
echo %hdirl%\hbcpage.lib  >> msvc.tmp
echo %hdirl%\hbwin.lib  >> msvc.tmp
echo %hdirl%\hbct.lib  >> msvc.tmp
echo %hdirl%\hbziparc.lib >> msvc.tmp
echo %hdirl%\hbmzip.lib >> msvc.tmp
echo %hdirl%\hbzlib.lib >> msvc.tmp
echo %hdirl%\hbpcre.lib >> msvc.tmp
echo %hdirl%\minizip.lib >> msvc.tmp
echo %hdirl%\xhb.lib >> msvc.tmp
echo %hdirl%\hbcplr.lib >> msvc.tmp
echo %hdirl%\png.lib >> msvc.tmp
echo %hdirl%\hbcomm.lib >> msvc.tmp
rem Uncomment these two lines to use Advantage RDD
rem echo %hdirl%\rddads.lib >> msvc.tmp
rem echo %hdirl%\ace32.lib >> msvc.tmp
rem echo ws2_32.lib   >> msvc.tmp
echo kernel32.lib  >> msvc.tmp
echo user32.lib   >> msvc.tmp
echo gdi32.lib   >> msvc.tmp
echo winspool.lib  >> msvc.tmp
echo comctl32.lib  >> msvc.tmp
echo comdlg32.lib  >> msvc.tmp
echo advapi32.lib  >> msvc.tmp
echo shell32.lib  >> msvc.tmp
echo ole32.lib   >> msvc.tmp
echo oleaut32.lib  >> msvc.tmp
echo uuid.lib    >> msvc.tmp
echo odbc32.lib   >> msvc.tmp
echo odbccp32.lib  >> msvc.tmp
echo iphlpapi.lib  >> msvc.tmp
echo mpr.lib    >> msvc.tmp
echo version.lib  >> msvc.tmp
echo wsock32.lib  >> msvc.tmp
echo msimg32.lib  >> msvc.tmp
echo oledlg.lib   >> msvc.tmp
echo psapi.lib   >> msvc.tmp
echo gdiplus.lib  >> msvc.tmp
echo winmm.lib   >> msvc.tmp
echo vfw32.lib   >> msvc.tmp
echo runtimeobject.lib >> msvc.tmp
echo ws2_32.lib   >> msvc.tmp
echo shlwapi.lib  >> msvc.tmp
echo strmiids.lib  >> msvc.tmp
IF EXIST %1.res echo %1.res >> msvc.tmp
"%VCINSTALLDIR%"bin\link @msvc.tmp /nologo /subsystem:windows,5.01 /force:multiple /NODEFAULTLIB:msvcrt /machine:X86 /nxcompat:NO /Ignore:4006
IF ERRORLEVEL 1 GOTO LINKERROR
ECHO * Application successfully built *
@set path=%oldpath%
@set include=%oldinclude%
@set lib=%oldlib%
@set libpath=%oldlibpath%
@set oldpath=""
@set oldinclude=""
@set oldlib=""
@set oldlibpath=""
%1
GOTO EXIT
ECHO
rem delete temporary files
@del %1.c
@del msvc.tmp
:COMPILEERROR
@type comp.log
@type warnings.log
ECHO * Compiling errors *
GOTO EXIT
:LINKERROR
ECHO * Linking errors *
GOTO EXIT
:SINTAX
ECHO   SYNTAX: Build [Program]   {-- No especifiques la extensi¢n PRG
ECHO Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â {-- Don't specify .PRG extension
GOTO EXIT
:NOEXIST
ECHO The specified PRG %1 does not exist
:EXIT@ECHO OFF
CLS
ECHO ÚÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄ¿
ECHO ³ FiveWin for Harbour 16.05 - May  2016      Harbour development power  ³Ü
ECHO ³ (c) FiveTech,1993-2015 for Microsoft Windows 9X/NT/200X/ME/XP/Vista/7/8/10 ³Û
ECHO ÀÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÄÙÛ
ECHO ÿ ßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßßß
if A%1 == A GOTO :SINTAX
if NOT EXIST %1.prg GOTO :NOEXIST
@set oldpath=%path%
@set oldinclude=%include%
@set oldlib=%lib%
@set oldlibpath=%libpath%
if exist "%ProgramFiles%\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" call "%ProgramFiles%\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86_amd64
if exist "%ProgramFiles(x86)%\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" call "%ProgramFiles(x86)%\Microsoft Visual Studio 14.0\VC\vcvarsall.bat" x86_amd64
if "%FWDIR%" == "" set FWDIR=c:\fwh64U
if "%HBDIR%" == "" set HBDIR=c:\harbour64
ECHO Compiling...
@set fwh=%FWDIR%
set hdir=%HBDIR%
set hdirl=%hdir%\lib\vc64
del *.obj
del *.ppo
attrib %1.exe -r
%hdir%\bin\harbour otrasfun.prg /n /i%fwh%\include;%hdir%\include;%sdkdir%\include  /w0 /p /d__64__ %2 %3 > comp.log
%hdir%\bin\harbour %1 /n /i%fwh%\include;%hdir%\include /w0 /p /d__64__ %2 %3 > comp.log 2> warnings.log
IF ERRORLEVEL 1 GOTO COMPILEERROR
@type comp.log
@type warnings.log
cl -TP -W3 -O2 -c -I%hdir%\include %1.c otrasfun.c
:ENDCOMPILE
IF EXIST %1.rc rc -r -D__64__ %1
echo %1.obj otrasfun.obj > msvc.tmp
echo %fwdir%\lib\FiveH64.lib %fwdir%\lib\FiveHC64.lib %fwdir%\lib\libmysql64.lib  >> msvc.tmp
echo %hdirl%\hbrtl.lib  >> msvc.tmp
echo %hdirl%\hbvm.lib  >> msvc.tmp
echo %hdirl%\gtgui.lib  >> msvc.tmp
echo %hdirl%\hblang.lib  >> msvc.tmp
echo %hdirl%\hbmacro.lib  >> msvc.tmp
echo %hdirl%\hbrdd.lib  >> msvc.tmp
echo %hdirl%\rddntx.lib  >> msvc.tmp
echo %hdirl%\rddcdx.lib  >> msvc.tmp
echo %hdirl%\rddfpt.lib  >> msvc.tmp
echo %hdirl%\hbsix.lib  >> msvc.tmp
echo %hdirl%\hbdebug.lib  >> msvc.tmp
echo %hdirl%\hbcommon.lib  >> msvc.tmp
echo %hdirl%\hbpp.lib  >> msvc.tmp
echo %hdirl%\hbcpage.lib  >> msvc.tmp
echo %hdirl%\hbwin.lib  >> msvc.tmp
echo %hdirl%\hbct.lib  >> msvc.tmp
echo %hdirl%\hbziparc.lib >> msvc.tmp
echo %hdirl%\hbmzip.lib >> msvc.tmp
echo %hdirl%\hbzlib.lib >> msvc.tmp
echo %hdirl%\hbpcre.lib >> msvc.tmp
echo %hdirl%\minizip.lib >> msvc.tmp
echo %hdirl%\xhb.lib >> msvc.tmp
echo %hdirl%\hbcplr.lib >> msvc.tmp
echo %hdirl%\png.lib >> msvc.tmp
echo %hdirl%\hbcomm.lib >> msvc.tmp
rem Uncomment these two lines to use Advantage RDD
rem echo %hdirl%\rddads.lib >> msvc.tmp
rem echo %hdirl%\ace32.lib >> msvc.tmp
rem echo ws2_32.lib   >> msvc.tmp
echo kernel32.lib  >> msvc.tmp
echo user32.lib   >> msvc.tmp
echo gdi32.lib   >> msvc.tmp
echo winspool.lib  >> msvc.tmp
echo comctl32.lib  >> msvc.tmp
echo comdlg32.lib  >> msvc.tmp
echo advapi32.lib  >> msvc.tmp
echo shell32.lib  >> msvc.tmp
echo ole32.lib   >> msvc.tmp
echo oleaut32.lib  >> msvc.tmp
echo uuid.lib    >> msvc.tmp
echo odbc32.lib   >> msvc.tmp
echo odbccp32.lib  >> msvc.tmp
echo iphlpapi.lib  >> msvc.tmp
echo mpr.lib    >> msvc.tmp
echo version.lib  >> msvc.tmp
echo wsock32.lib  >> msvc.tmp
echo msimg32.lib  >> msvc.tmp
echo oledlg.lib   >> msvc.tmp
echo psapi.lib   >> msvc.tmp
echo gdiplus.lib  >> msvc.tmp
echo winmm.lib   >> msvc.tmp
echo vfw32.lib   >> msvc.tmp
echo runtimeobject.lib >> msvc.tmp
echo ws2_32.lib   >> msvc.tmp
echo shlwapi.lib  >> msvc.tmp
echo strmiids.lib  >> msvc.tmp
IF EXIST %1.res echo %1.res >> msvc.tmp
link @msvc.tmp /nologo /subsystem:windows,5.02 /force:multiple /NODEFAULTLIB:libc /machine:X64 /nxcompat:NO /Ignore:4006
rem link @msvc.tmp /nologo /subsystem:windows /force:multiple /NODEFAULTLIB:msvcrt
IF ERRORLEVEL 1 GOTO LINKERROR
ECHO * Application successfully built *
@set path=%oldpath%
@set include=%oldinclude%
@set lib=%oldlib%
@set libpath=%oldlibpath%
@set oldpath=""
@set oldinclude=""
@set oldlib=
@set oldlibpath=
GOTO EXIT
ECHO
rem delete temporary files
@del %1.c
@del msvc.tmp
:COMPILEERROR
@type comp.log
ECHO * Compiling errors *
GOTO EXIT
:LINKERROR
ECHO * Linking errors *
GOTO EXIT
:SINTAX
ECHO   SYNTAX: Build [Program]   {-- No especifiques la extensi¢n PRG
ECHO Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â Â {-- Don't specify .PRG extension
GOTO EXIT
:NOEXIST
ECHO The specified PRG %1 does not exist
:EXITHGLOBAL DibRead( LPSTR szDibName )
{
HFILE hFile;
LONG lSize;
HGLOBAL hDib = 0;
BITMAPFILEHEADER Header;
if( hFile = ( HFILE ) _lopen( szDibName, READ ) )
{
if( hDib = ( HGLOBAL ) fwGlobalAlloc( GMEM_MOVEABLE | GMEM_DISCARDABLE,
lSize = _llseek( hFile, 0, 2 ) ) )
{
_llseek( hFile, 0, 0 );
_lread( hFile, &Header, sizeof( BITMAPFILEHEADER ) );
_hread( hFile, GlobalLock( hDib ),
lSize - sizeof( BITMAPFILEHEADER ) );
GlobalUnlock( hDib );
}
_lclose( hFile );
}
else
MessageBox( 0, "error", "error", 0 );
return hDib;
}Luis,
> Al quitar los combobox o el xbrowse me elimina el error en ventanas que salen las imágenes del btnbmp mal
En las imágenes que has publicado aparece el mismo bitmap monocromo en donde deberÃa aparecer el xbrowse
Porque se vé un bitmap en el lugar del xbrowse ? Cómo has eliminado el xbrowse ?
Usas alguna clase de FWH modificada por ti ?
Visual Studio te muestra algún warning de que hay alguna función duplicada ?
Luis,
Los bitmaps que muestras son desde recursos ó fichero externos BMP ?
Puedes enviarnos los BMPs, RC (y RES) ? gracias
color.c
HB_FUNC( ARGB2RGB )
{
#ifdef _WIN64
  LONGLONG argb = hb_parnll( 1 );
#else
  double  argb = hb_parnd(  1 );
#endif
  HB_LONG  rgb;
  if ( argb > 0x00ffffff )
  {
   rgb  = ( ( ( ULONG ) argb ) & 0x00ffffff );
   rgb  = ( ( rgb & 0x00ff0000 ) >> 16 ) |
       ( ( rgb & 0x0000ff00 ) ) |
       ( ( rgb & 0x000000ff ) << 16 );
  } else rgb = ( ULONG ) argb;
  hb_retnl( rgb );
}
ctrldraw.c
      // if( lstrcmp( ClassName, "MDIClient" ) == 0 ) // MDIClient
      //   iParentsWithCaption++;
      // if( lstrcmp( ClassName, L"MDIClient" ) == 0 ) // MDIClient
      //  iParentsWithCaption++;
fonts.c
  if( lpLogFont->lfFaceName[ 0 ] != '@' )
     hb_storvc( lpLogFont->lfFaceName, -1, nFontIndex );
    else
     hb_storvc( lpLogFont->lfFaceName + 1, -1, nFontIndex );
   Â
gdipfwh.cpp
HB_FUNC( GDIP_COLORBRUSH )
{
  hb_retptr( new SolidBrush( rgbtoclr( (ARGB) hb_parnd( 1 ) ) ) );
}
//----------------------------------------------------------------------------//
HB_FUNC( GDIP_IMAGEBRUSH )
{
 Bitmap * pImage = ( Bitmap * ) hb_parptr( 1 );
 hb_retptr( new TextureBrush( pImage ) );
}
//----------------------------------------------------------------------------//
HB_FUNC( GDIP_DELETEBRUSH )
{
  delete ( ( Brush * ) hb_parptr( 1 ) );
}
//----------------------------------------------------------------------------//
#ifdef _WIN64
#ifdef __BORLANDC__
#define __BCC64__
#endif
#endif
HB_FUNC( GDIP_DRAWTEXT ) // hDC, cText, aRect, hFont, pBrush, nAlign )
{
  HDC     hDC   = ( HDC ) fw_parH( 1 );
 Graphics * graphics = new Graphics( hDC );
  LPWSTR string = fw_parWide( 2 );
 HFONT hFont  = ( HFONT ) fw_parH( 4 );
 Font font( hDC, hFont );
 Brush * brush;
 LPCSTR  pStr;
  int     nAlign = DT_CENTER | DT_VCENTER;
 BOOL bLocalBrush = FALSE;
 RectF layoutRect = RectF( hb_parvnd( 3, 2 ), hb_parvnd( 3, 1 ),
           hb_parvnd( 3, 4 ) - hb_parvnd( 3, 2 ), hb_parvnd( 3, 3 ) - hb_parvnd( 3, 1 ) );
  if ( HB_ISPOINTER( 5 ) ) brush = ( Brush * ) hb_parptr( 5 );
  else {
    bLocalBrush = TRUE;
    brush      = new SolidBrush( rgbtoclr( (ARGB) ( HB_ISNUM( 5 ) ?
                     hb_parnd( 5 ) : 0x80000000 ) ) );
 }
 if ( HB_ISCHAR( 6 ) )
 {
   pStr = hb_parc( 6 );
   nAlign  =  ( strchr( pStr, 'L' ) == NULL && strchr( pStr, 'l' ) == NULL ?
         ( strchr( pStr, 'R' ) == NULL && strchr( pStr, 'r' ) == NULL ? DT_CENTER : DT_RIGHT ) : DT_LEFT )
       +  ( strchr( pStr, 'T' ) == NULL && strchr( pStr, 't' ) == NULL ?
         ( strchr( pStr, 'B' ) == NULL && strchr( pStr, 'b' ) == NULL ? DT_VCENTER : DT_BOTTOM ) : DT_TOP );
 }
 else if ( HB_ISNUM( 6 ) )    nAlign    = ( hb_parni( 6 ) & 0x0f );
//#if defined(__BCC64__) || defined(__GNUC__)
//Â graphics->DrawString( string, -1, &font, layoutRect, NULL, brush );
//#else
//Â StringFormat sf = new StringFormat( 0, LANG_NEUTRAL );
  StringFormat sf;
  sf.SetAlignment( ( StringAlignment ) ( nAlign & 3 ));
 sf.SetLineAlignment( ( StringAlignment ) ( nAlign >> 2 ) );
  graphics->DrawString( string, -1, &font, layoutRect, &sf, brush );
//#endif
  hb_xfree( string );
  if ( bLocalBrush ) delete brush;
}
//----------------------------------------------------------------------------//
gdiplus.cpp
HB_FUNC( GDIP_SETWRAPTEXTUREBRUSH )
{
  TextureBrush * Brush = ( TextureBrush * ) hb_parptr( 1 );
  int ntype = hb_parni( 2 )  ;
  if ( ntype == 0 )
    Brush->SetWrapMode( WrapModeTile ) ;
  if ( ntype == 1 )
    Brush->SetWrapMode( WrapModeTileFlipX ) ;
  if ( ntype == 2 )
    Brush->SetWrapMode( WrapModeTileFlipY ) ;
  if ( ntype == 3 )
    Brush->SetWrapMode( WrapModeTileFlipXY ) ;
  if ( ntype == 4 )
    Brush->SetWrapMode( WrapModeClamp ) ;
}
//----------------------------------------------------------------------------//
text.c
HB_FUNC( DRAWTEXTEX ) // ( hDC, cText, aRect, nStyle, [hFont], [nClr], [@nRight] ) --> nHeight
  HDC    hDC;
  HFONT    hFont, hOldFont;
  COLORREF nClr, nOldClr;
  BOOL   bColor = FALSE;
      hDC   = fw_parH( 1 );
      if ( hb_pcount() > 4 && HB_ISNUM( 5 ) )
      {
        hFont = ( HFONT ) fw_parH( 5 );
    hOldFont = SelectObject( hDC, hFont );
   }
   if ( hb_pcount() > 5 && HB_ISNUM( 6 ) )
   {
    bColor = TRUE;
    nClr = ( COLORREF ) ( hb_parnl( 6 ) & 0xffffff );
    nOldClr = SetTextColor( hDC, nClr );
   }
     iRet    = DrawTextExW( hDC,
     iRet   = DrawTextExA( hDC,
   if ( hOldFont ) SelectObject( hDC, hOldFont );
     if ( bColor )  SetTextColor( hDC, nOldClr );
   if ( hb_pcount() > 6 && HB_ISBYREF( 7 ) && ( dwStyle & DT_CALCRECT ) )
     hb_storni( rct.right, 7 );imgtxtio.prg
valtostr.prg
valtostt.prg//newbtnbmp.prg
menu.prg
pdmenu.prg
printer.prg
rpreview.prg
say.prg
tfoldex.prg
triched5.prg
window.prg
xbrowse.prgLuis,
Puedes responderme a esta pregunta ?
> Visual Studio te muestra algún warning de que hay alguna función duplicada ?
Seguimos revisando las diferencias para saber que pueda estar sucediendote.
gracias por tu feedback
Maestro Antonio
Visual Studio te muestra algún warning de que hay alguna función duplicada?
no da ningún warning
lo extraño es que en 64bits se comporta bien con Visual Studio, voy a ver si hago unas pruebas con Borland c 7
Gracias