Nuevo FWH 16.11

User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Nuevo FWH 16.11

Post by Antonio Linares »

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
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
nageswaragunupudi
Posts: 8017
Joined: Sun Nov 19, 2006 5:22 am
Location: India
Contact:

Re: Nuevo FWH 16.11

Post by nageswaragunupudi »

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
We maintain a Million rows table by name `custbig` on our localhost for the purpose of benchmarking and performance checking during our development. This table is derived from customer.dbf by copying 2000 times.

We prepared this test program to compare the speeds of reading 1,000,000 rows from this table by ODBC (using TOdbc and TOdbcDirect classes of FWH), ADO (superior than ODBC) and FWHMYSQL.

Code: Select all

#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
 
Image

We can see the times taken on the Titles of the Browses.
This sample can be tried by any one on their system by changing login parameters and table name, without any additional libraries.

Summary:

Time taken for reading 1,000,000 records of custbig table from localhost.

Code: Select all

ODBC           138.17 seconds ( 2 minutes 18 seconds )
ADO             14.58 seconds
FWHMYSQL         3.78 seconds 
 
We see that ADO took about 4 times and ODBC took 36.5 times more than FWMYSQL to read the same table.

It is pertinent to mention that TDolphin and TMySql are faster than FWHMYSQL and they take around 2.5 seconds. The difference is due to the different approach adopted by FWH and that is a conscious decision. In most cases the difference is negligible.

In case you have found out any ODBC implementation which can read the 1,000,000 row table in one second or less then kindly let us know its source and we try to learn from that.
Regards

G. N. Rao.
Hyderabad, India
luisduque
Posts: 133
Joined: Mon May 12, 2008 4:13 pm
Location: Venezuela
Contact:

Re: Nuevo FWH 16.11

Post by luisduque »

Maestro 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.
Fivewin 16.11
Harbour 3.2.0
Visual Studio 2015 community
MariaDb/MySql

Ing. MSc. Luis Duque
http://www.accasoft.net
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Nuevo FWH 16.11

Post by Antonio Linares »

Estamos revisándolo

gracias
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Nuevo FWH 16.11

Post by Antonio Linares »

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 ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Nuevo FWH 16.11

Post by Antonio Linares »

Rao ha construido este espectacular ejemplo para probar que los botones en FWH 16.11 funcionan perfectamente:

Code: Select all

#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
Image
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Nuevo FWH 16.11

Post by Antonio Linares »

Aqui otro ejemplo similar usando gradientes.

Como se puede ver, está funcionando bien. Luego parece ser algo específico de tu aplicación, Luis.

Ha sido probado con bcc Harbour, xharbour, MSVC 32bits Harbour, MSVC 64 bits y BCC7164

Funcionando bien con todos ellos :-)

Code: Select all

#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
Image
regards, saludos

Antonio Linares
www.fivetechsoft.com
luisduque
Posts: 133
Joined: Mon May 12, 2008 4:13 pm
Location: Venezuela
Contact:

Re: Nuevo FWH 16.11

Post by luisduque »

Maestro Antonio

No he podido mostrar con un ejemplo claro porque no puedo reproducir el error

Trabajo ese tema muy normal

Code: Select all

@268,106 BTNBMP qBtnZN File "Imagenes\Zonas.bmp"   Prompt "&Zonas"  PIXEL OF oDlgCli Size 26,26 Font oFontBtn ACTION TabZonas()  2007
 
por otro lado

Buildh32

Code: Select all

@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
buildh64

Code: Select all

@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

:EXIT

Fivewin 16.11
Harbour 3.2.0
Visual Studio 2015 community
MariaDb/MySql

Ing. MSc. Luis Duque
http://www.accasoft.net
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Nuevo FWH 16.11

Post by Antonio Linares »

Luis,

Por favor modifica el código fuente de source\winapi\dib.c de esta forma:

Code: Select all

HGLOBAL 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;
}
 
veamos si los ficheros de las imágenes son abiertos correctamente
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Nuevo FWH 16.11

Post by Antonio Linares »

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 ?
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Nuevo FWH 16.11

Post by Antonio Linares »

Luis,

Los bitmaps que muestras son desde recursos ó fichero externos BMP ?

Puedes enviarnos los BMPs, RC (y RES) ? gracias
regards, saludos

Antonio Linares
www.fivetechsoft.com
luisduque
Posts: 133
Joined: Mon May 12, 2008 4:13 pm
Location: Venezuela
Contact:

Re: Nuevo FWH 16.11

Post by luisduque »

Maestro Antonio

1. Todos los bmp son externos
2. No he modificado ninguna clase

Ahora para poder determinar me di la tarea de comparar la version 16.10 y 16.11

WINAPI,FUNCTION Y CLASES

FiveHC32.lib(Aqui está el problema)

WINAPI (que fueron modificadas en la versión 16.11)

Code: Select all


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 );

 
FUNCTION (que fueron modificadas en la versión 16.11) (no debe tener nada que ver con el error)

Code: Select all

imgtxtio.prg
valtostr.prg
valtostt.prg//new
 

CLASES (que fueron modificadas en la versión 16.11) (Compile las clases como para probar y no tienen problema)

Code: Select all

btnbmp.prg
menu.prg
pdmenu.prg
printer.prg
rpreview.prg
say.prg
tfoldex.prg
triched5.prg
window.prg
xbrowse.prg
 
Que hice
FiveH32 y FiveHC32 son las librerias principales donde están las Clases, funciones y API

Sustituí FiveH32.lib y seguia el error
luego Sustituí FiveHC32.lib que es la que tiene las funciones y api y el error deja de salir


Lo que si no logro entender es porque en 64bits si sirve bien, pudiera ser una declación de variable o algo así no se


Enlace para las imagenes

https://www.dropbox.com/sh/ctnzxlk544ja ... AHfva?dl=0

Muchas gracias
Fivewin 16.11
Harbour 3.2.0
Visual Studio 2015 community
MariaDb/MySql

Ing. MSc. Luis Duque
http://www.accasoft.net
User avatar
Antonio Linares
Site Admin
Posts: 37481
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain
Contact:

Re: Nuevo FWH 16.11

Post by Antonio Linares »

Luis,

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
regards, saludos

Antonio Linares
www.fivetechsoft.com
luisduque
Posts: 133
Joined: Mon May 12, 2008 4:13 pm
Location: Venezuela
Contact:

Re: Nuevo FWH 16.11

Post by luisduque »

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
Fivewin 16.11
Harbour 3.2.0
Visual Studio 2015 community
MariaDb/MySql

Ing. MSc. Luis Duque
http://www.accasoft.net
Post Reply