diff --git a/harbour/ChangeLog b/harbour/ChangeLog index c0419c64d2..1fe6db36e3 100644 --- a/harbour/ChangeLog +++ b/harbour/ChangeLog @@ -17,11 +17,38 @@ past entries belonging to these authors: Viktor Szakats. */ +2009-05-26 09:24 UTC+0200 Viktor Szakats (harbour.01 syenar hu) + * contrib/gtwvg/wvgax.prg + * contrib/gtwvg/wvgwin.c + * contrib/gtwvg/wvgsink.c + ! Fixed HB_OLEAUTO() -> WIN_OLEAUTO() + * Formatting. + ! Fixed a few ISNIL()s. + ! Fixed a few hb_parc() to hb_parcx() (many potential GPFs). + % Removed unnecessary ISBYREF() and hb_ret() calls. + ! Prefixed some static vars with 's_'. + ! Fixed potential buffer overrun and memory corruption in + Invoke() function. + + * contrib/rddads/adsfunc.c + + Changed to always define all Harbour level functions. + For unsupported ADS versions, these function will be stubs + returning dummy values. + ; TODO: Do the same in other contribs, like hbsqlit3. Anyone? + + * contrib/rddads/ads1.c + ! Fixed typos and missing casts preventing to compile with + pre-6.00 ACE versions. + + * contrib/rddads/Makefile + + contrib/rddads/adsextrn.ch + + Added EXTERNAL header. + 2009-05-25 18:16 UTC-0800 Pritpal Bedi (pritpal@vouchcac.com) * contrib/gtwvg/wvgsink.c ! HBNIL() -> HB_ISNUM() | HB_ISCHAR(). + Few more convinience functions. - + 2009-05-26 02:54 UTC+0200 Viktor Szakats (harbour.01 syenar hu) * contrib/xhb/Makefile + contrib/xhb/datesxhb.c diff --git a/harbour/contrib/gtwvg/wvgax.prg b/harbour/contrib/gtwvg/wvgax.prg index 3148f3b4df..6330426f13 100644 --- a/harbour/contrib/gtwvg/wvgax.prg +++ b/harbour/contrib/gtwvg/wvgax.prg @@ -66,24 +66,24 @@ /*----------------------------------------------------------------------*/ /*----------------------------------------------------------------------*/ -#include 'hbclass.ch' -#include 'common.ch' -#include 'inkey.ch' -#include 'hbgtinfo.ch' +#include "hbclass.ch" +#include "common.ch" +#include "inkey.ch" +#include "hbgtinfo.ch" -#include 'hbgtwvg.ch' -#include 'wvtwin.ch' -#include 'wvgparts.ch' +#include "hbgtwvg.ch" +#include "wvtwin.ch" +#include "wvgparts.ch" /*----------------------------------------------------------------------*/ -STATIC nRef := 0 +STATIC s_nRef := 0 /*----------------------------------------------------------------------*/ -CLASS WvgActiveXControl FROM HB_OleAuto, WvgWindow +CLASS WvgActiveXControl FROM win_OleAuto, WvgWindow - DATA CLSID INIT '' + DATA CLSID INIT "" DATA server INIT NIL DATA license INIT NIL DATA controlFlags INIT 0 @@ -139,7 +139,7 @@ METHOD New( oParent, oOwner, aPos, aSize, aPresParams, lVisible ) CLASS WvgActiv ::style := WS_CHILD + WS_VISIBLE + WS_CLIPCHILDREN + WS_CLIPSIBLINGS ::objType := objTypeActiveX - ::className := 'WVGACTIVEX' + ::className := "WVGACTIVEX" RETURN Self /*----------------------------------------------------------------------*/ @@ -162,7 +162,7 @@ METHOD Create( oParent, oOwner, aPos, aSize, aPresParams, lVisible, cCLSID, cLic IF ValType( ::hContainer ) + ValType( ::CLSID ) != "NC" RETURN( NIL ) ELSEIF HB_AX_AtlAxWinInit() - nRef++ + s_nRef++ ENDIF ::nID := ::oParent:GetControlId() @@ -230,7 +230,7 @@ METHOD Destroy() CLASS WvgActiveXControl ::hSink := NIL ENDIF - IF --nRef == 0 + IF --s_nRef == 0 /* HB_AX_AtlAxWinTerm() */ ENDIF ENDIF @@ -301,9 +301,9 @@ CLASS AutomationObject DATA interface AS NUMERIC READONLY DATA interfaceName AS CHARACTER READONLY - DATA CLSID AS CHARACTER READONLY INIT ' ' - DATA server AS CHARACTER READONLY INIT ' ' - DATA license AS CHARACTER READONLY INIT ' ' + DATA CLSID AS CHARACTER READONLY INIT " " + DATA server AS CHARACTER READONLY INIT " " + DATA license AS CHARACTER READONLY INIT " " DATA cargo METHOD create( cProgID, cServerName, cLicense ) @@ -389,4 +389,3 @@ METHOD onError( oError ) CLASS AutomationObject RETURN xValue #endif /*----------------------------------------------------------------------*/ - diff --git a/harbour/contrib/gtwvg/wvgsink.c b/harbour/contrib/gtwvg/wvgsink.c index 0f5dec0b3c..43b4e89d27 100644 --- a/harbour/contrib/gtwvg/wvgsink.c +++ b/harbour/contrib/gtwvg/wvgsink.c @@ -77,7 +77,7 @@ /*----------------------------------------------------------------------*/ -static HMODULE hLib = NULL; +static HMODULE s_hLib = NULL; typedef BOOL ( CALLBACK *PATLAXWININIT )( void ); typedef BOOL ( CALLBACK *PATLAXWINTERM )( void ); @@ -209,7 +209,8 @@ typedef struct } IEventHandlerVtbl; #endif -typedef struct { +typedef struct +{ IEventHandlerVtbl* lpVtbl; int count; IConnectionPoint* pIConnectionPoint; /* Ref counted of course. */ @@ -260,12 +261,12 @@ hb_ToOutDebug( "..................if ( IsEqualIID( vTableGuid, HB_ID_REF( ( ( My return S_OK; } *ppv = 0; - return( E_NOINTERFACE ); + return E_NOINTERFACE; } static ULONG STDMETHODCALLTYPE AddRef( IEventHandler *self ) { - return( ++( ( MyRealIEventHandler * ) self )->count ); + return ++( ( MyRealIEventHandler * ) self )->count; } @@ -279,12 +280,12 @@ static ULONG STDMETHODCALLTYPE Release( IEventHandler *self ) } if( ( MyRealIEventHandler * ) self ) - { GlobalFree( ( MyRealIEventHandler * ) self ); - } - return( ( ULONG ) 0 ); + + return ( ULONG ) 0; } - return( ( ULONG ) ( ( MyRealIEventHandler * ) self )->count ); + else + return ( ULONG ) ( ( MyRealIEventHandler * ) self )->count; } static HRESULT STDMETHODCALLTYPE GetTypeInfoCount( IEventHandler *self, UINT *pCount ) @@ -381,12 +382,16 @@ hb_ToOutDebug( "event = %i",(int)dispid ); } iArg = params->cArgs; + + if( iArg > HB_SIZEOFARRAY( pItemArray ) ) + iArg = HB_SIZEOFARRAY( pItemArray ); + for( i = 1; i <= iArg; i++ ) { pItem = hb_itemNew( NULL ); - hb_oleVariantToItem( pItem, &( params->rgvarg[ iArg-i ] ) ); - pItemArray[ i-1 ] = pItem; - ulRefMask |= ( 1L << (i-1) ); /* set bit i */ + hb_oleVariantToItem( pItem, &( params->rgvarg[ iArg - i ] ) ); + pItemArray[ i - 1 ] = pItem; + ulRefMask |= ( 1L << ( i - 1 ) ); /* set bit i */ } if( iArg ) @@ -400,15 +405,15 @@ hb_ToOutDebug( "event = %i",(int)dispid ); for( i = iArg; i > 0; i-- ) { - if( HB_IS_BYREF( pItemArray[ iArg-i ] ) ) - hb_oleItemToVariant( &( params->rgvarg[ iArg-i ] ), pItemArray[ iArg-i ] ); + if( HB_IS_BYREF( pItemArray[ iArg - i ] ) ) + hb_oleItemToVariant( &( params->rgvarg[ iArg - i ] ), pItemArray[ iArg - i ] ); } /* Pritpal */ if( iArg ) { for( i = iArg; i > 0; i-- ) - hb_itemRelease( pItemArray[ i-1 ] ); + hb_itemRelease( pItemArray[ i - 1 ] ); } hb_vmPopState(); } @@ -420,7 +425,8 @@ hb_ToOutDebug( "event = %i",(int)dispid ); /*----------------------------------------------------------------------*/ -static const IEventHandlerVtbl IEventHandler_Vtbl = { +static const IEventHandlerVtbl IEventHandler_Vtbl = +{ QueryInterface, AddRef, Release, @@ -449,13 +455,9 @@ static HRESULT SetupConnectionPoint( device_interface* pdevice_interface, REFIID HB_SYMBOL_UNUSED( pn ); thisobj = ( IEventHandler * ) GlobalAlloc( GMEM_FIXED, sizeof( MyRealIEventHandler ) ); - if( !( thisobj ) ) + if( thisobj ) { - hr = E_OUTOFMEMORY; - } - else - { - ( ( MyRealIEventHandler* ) thisobj)->lpVtbl = ( IEventHandlerVtbl * ) &IEventHandler_Vtbl; + ( ( MyRealIEventHandler * ) thisobj )->lpVtbl = ( IEventHandlerVtbl * ) &IEventHandler_Vtbl; ( ( MyRealIEventHandler * ) thisobj )->pSelf = NULL; ( ( MyRealIEventHandler * ) thisobj )->count = 0; ( ( MyRealIEventHandler * ) thisobj )->iID_riid = 0; @@ -508,6 +510,8 @@ static HRESULT SetupConnectionPoint( device_interface* pdevice_interface, REFIID pIUnknown = NULL; } } + else + hr = E_OUTOFMEMORY; *pThis = ( void * ) thisobj; @@ -527,9 +531,7 @@ HB_FUNC( HB_AX_SHUTDOWNCONNECTIONPOINT ) } if( hSink && hSink->pEvents ) - { hb_itemRelease( hSink->pEvents ); - } } /*----------------------------------------------------------------------*/ @@ -557,7 +559,7 @@ HB_FUNC( HB_AX_ATLAXWININIT ) { BOOL bRet = FALSE; - if( !hLib ) + if( !s_hLib ) { PATLAXWININIT AtlAxWinInit; @@ -594,11 +596,11 @@ HB_FUNC( HB_AX_ATLAXWININIT ) * developers of few well known MS-Win GUI projects for [x]Harbour. * Please remember about it. */ - hLib = LoadLibrary( szLibName ); + s_hLib = LoadLibrary( szLibName ); - if( hLib ) + if( s_hLib ) { - AtlAxWinInit = ( PATLAXWININIT ) GetProcAddress( hLib, HBTEXT( "AtlAxWinInit" ) ); + AtlAxWinInit = ( PATLAXWININIT ) GetProcAddress( s_hLib, HBTEXT( "AtlAxWinInit" ) ); if( AtlAxWinInit ) { @@ -608,8 +610,8 @@ HB_FUNC( HB_AX_ATLAXWININIT ) if( !bRet ) { - FreeLibrary( hLib ); - hLib = NULL; + FreeLibrary( s_hLib ); + s_hLib = NULL; } } } @@ -625,16 +627,16 @@ HB_FUNC( HB_AX_ATLAXWINTERM ) PATLAXWINTERM AtlAxWinTerm; BOOL bRet = FALSE; - if( hLib ) + if( s_hLib ) { - AtlAxWinTerm = ( PATLAXWINTERM ) GetProcAddress( hLib, HBTEXT( "AtlAxWinTerm" ) ); + AtlAxWinTerm = ( PATLAXWINTERM ) GetProcAddress( s_hLib, HBTEXT( "AtlAxWinTerm" ) ); if( AtlAxWinTerm ) { if( AtlAxWinTerm() ) { - FreeLibrary( hLib ); - hLib = NULL; + FreeLibrary( s_hLib ); + s_hLib = NULL; bRet = TRUE; } } @@ -655,7 +657,7 @@ HB_FUNC( HB_AX_ATLAXGETCONTROL ) /* HWND hWnd = handle of control container wind HWND hWnd = NULL; char *lpcclass = hb_parcx( 1 ); HWND hParent = ( HWND ) ( HB_PTRDIFF ) hb_parnint( 2 ); - char *Caption = HB_ISCHAR( 3 ) ? hb_parc( 3 ) : "" ; + char *Caption = hb_parcx( 3 ); HMENU id = HB_ISNUM( 4 ) ? ( HMENU ) ( HB_PTRDIFF ) hb_parnint( 4 ) : ( HMENU ) ( HB_PTRDIFF ) -1 ; int x = HB_ISNUM( 5 ) ? hb_parni( 5 ) : 0; int y = HB_ISNUM( 6 ) ? hb_parni( 6 ) : 0; @@ -664,7 +666,7 @@ HB_FUNC( HB_AX_ATLAXGETCONTROL ) /* HWND hWnd = handle of control container wind int Style = HB_ISNUM( 9 ) ? hb_parni( 9 ) : WS_CHILD | WS_VISIBLE | WS_CLIPCHILDREN | WS_CLIPSIBLINGS; int Exstyle = HB_ISNUM( 10 ) ? hb_parni( 10 ) : 0; - AtlAxGetControl = ( PATLAXGETCONTROL ) GetProcAddress( hLib, HBTEXT( "AtlAxGetControl" ) ); + AtlAxGetControl = ( PATLAXGETCONTROL ) GetProcAddress( s_hLib, HBTEXT( "AtlAxGetControl" ) ); if( AtlAxGetControl ) { LPTSTR cCaption = HB_TCHAR_CONVTO( Caption ); @@ -686,26 +688,12 @@ HB_FUNC( HB_AX_ATLAXGETCONTROL ) /* HWND hWnd = handle of control container wind hb_itemReturnRelease( hb_oleItemPut( NULL, obj ) ); } - else - { - hb_ret(); - } } - else - { - hb_ret(); - } - } - else - { - hb_ret(); } /* return the control handle */ - if ISBYREF( 12 ) - hb_stornint( ( HB_PTRDIFF ) hWnd, 12 ); - if ISBYREF( 13 ) - hb_stornint( ( HB_PTRDIFF ) pUnk, 13 ); + hb_stornint( ( HB_PTRDIFF ) hWnd, 12 ); + hb_stornint( ( HB_PTRDIFF ) pUnk, 13 ); } /*----------------------------------------------------------------------*/ @@ -715,7 +703,7 @@ HB_FUNC( HB_AX_ATLCREATEWINDOW ) /* HWND hWnd = handle of control container wind HWND hWnd; char *lpcclass = hb_parcx( 1 ); HWND hParent = ( HWND ) ( HB_PTRDIFF ) hb_parnint( 2 ); - char *Caption = HB_ISCHAR( 3 ) ? hb_parc( 3 ) : "" ; + char *Caption = hb_parcx( 3 ); HMENU id = HB_ISNUM( 4 ) ? ( HMENU ) ( HB_PTRDIFF ) hb_parnint( 4 ) : ( HMENU ) ( HB_PTRDIFF ) -1 ; int x = HB_ISNUM( 5 ) ? hb_parni( 5 ) : 0; int y = HB_ISNUM( 6 ) ? hb_parni( 6 ) : 0; @@ -744,7 +732,7 @@ HB_FUNC( HB_AX_ATLGETCONTROL ) /* HWND hWnd = handle of control container window IUnknown *pUnk = NULL; HWND hWnd = ( ISPOINTER( 1 ) ? ( HWND ) hb_parptr( 1 ) : ( HWND )( HB_PTRDIFF ) hb_parnint( 1 ) ); - AtlAxGetControl = ( PATLAXGETCONTROL ) GetProcAddress( hLib, HBTEXT( "AtlAxGetControl" ) ); + AtlAxGetControl = ( PATLAXGETCONTROL ) GetProcAddress( s_hLib, HBTEXT( "AtlAxGetControl" ) ); if( AtlAxGetControl ) { if( hWnd ) @@ -757,24 +745,9 @@ HB_FUNC( HB_AX_ATLGETCONTROL ) /* HWND hWnd = handle of control container window HB_VTBL( pUnk )->Release( HB_THIS( pUnk ) ); hb_itemReturnRelease( hb_oleItemPut( NULL, obj ) ); - if( ISBYREF( 2 ) ) - { - hb_stornint( ( HB_PTRDIFF ) pUnk, 2 ); - } - } - else - { - hb_ret(); + hb_stornint( ( HB_PTRDIFF ) pUnk, 2 ); } } - else - { - hb_ret(); - } - } - else - { - hb_ret(); } } @@ -786,7 +759,7 @@ HB_FUNC( HB_AX_ATLGETUNKNOWN ) /* HWND hWnd = handle of control container window IUnknown *pUnk = NULL; HWND hWnd = ( ISPOINTER( 1 ) ? ( HWND ) hb_parptr( 1 ) : ( HWND )( HB_PTRDIFF ) hb_parnint( 1 ) ); - AtlAxGetControl = ( PATLAXGETCONTROL ) GetProcAddress( hLib, HBTEXT( "AtlAxGetControl" ) ); + AtlAxGetControl = ( PATLAXGETCONTROL ) GetProcAddress( s_hLib, HBTEXT( "AtlAxGetControl" ) ); if( AtlAxGetControl ) { if( hWnd ) diff --git a/harbour/contrib/gtwvg/wvgwin.c b/harbour/contrib/gtwvg/wvgwin.c index 1c0d4098d4..17ad6ff8a8 100644 --- a/harbour/contrib/gtwvg/wvgwin.c +++ b/harbour/contrib/gtwvg/wvgwin.c @@ -133,12 +133,7 @@ HB_FUNC( WVG_HINSTANCE ) HB_FUNC( WIN_SENDMESSAGE ) { - LPTSTR cText = NULL; - - if( ISBYREF( 4 ) ) - { - cText = HB_TCHAR_CONVTO( hb_parc( 4 ) ); - } + LPTSTR cText = ISBYREF( 4 ) ? HB_TCHAR_CONVTO( hb_parcx( 4 ) ) : NULL; hb_retnl( ( ULONG ) SendMessage( ( HWND ) ( HB_PTRDIFF ) hb_parnint( 1 ), ( UINT ) hb_parni( 2 ), @@ -162,29 +157,26 @@ HB_FUNC( WIN_SENDMESSAGE ) HB_FUNC( WIN_SENDDLGITEMMESSAGE ) { PHB_ITEM pText = hb_param( 5, HB_IT_STRING ); - char *cText = NULL; + char * cText = NULL; int iLen = 0; if( pText ) { iLen = hb_itemGetCLen( pText ); - cText = (char*) hb_xgrab( iLen+1 ); - hb_xmemcpy( cText, hb_itemGetCPtr( pText ), iLen+1 ); + cText = ( char * ) hb_xgrab( iLen + 1 ); + hb_xmemcpy( cText, hb_itemGetCPtr( pText ), iLen + 1 ); } - hb_retnl( (LONG) SendDlgItemMessage( (HWND) ( HB_PTRDIFF ) hb_parnint( 1 ) , - (int) hb_parni( 2 ) , - (UINT) hb_parni( 3 ) , - (ISNIL(4) ? 0 : (WPARAM) hb_parnint( 4 )) , - (cText ? (LPARAM) cText : (LPARAM) hb_parnint( 5 )) - ) ); + hb_retnl( ( LONG ) SendDlgItemMessage( ( HWND ) ( HB_PTRDIFF ) hb_parnint( 1 ) , + ( int ) hb_parni( 2 ) , + ( UINT ) hb_parni( 3 ) , + ( ISNUM( 4 ) ? ( WPARAM ) hb_parnint( 4 ) : 0 ), + ( cText ? ( LPARAM ) cText : ( LPARAM ) hb_parnint( 5 ) ) + ) ); if( cText ) { - if( ISBYREF( 5 ) ) - { - hb_storclen( cText, iLen, 5 ) ; - } + hb_storclen( cText, iLen, 5 ); hb_xfree( cText ); } } @@ -272,14 +264,14 @@ HB_FUNC( WIN_MULDIV ) HB_FUNC( WIN_GETDIALOGBASEUNITS ) { - hb_retnl( ( LONG ) GetDialogBaseUnits() ) ; + hb_retnl( ( LONG ) GetDialogBaseUnits() ); } /*----------------------------------------------------------------------*/ HB_FUNC( WIN_SETDLGITEMTEXT ) { - LPTSTR lpBuffer = HB_TCHAR_CONVTO( hb_parc( 3 ) ); + LPTSTR lpBuffer = HB_TCHAR_CONVTO( hb_parcx( 3 ) ); SetDlgItemText( ( HWND ) ( HB_PTRDIFF ) hb_parnint( 1 ), hb_parni( 2 ), lpBuffer ); HB_TCHAR_FREE( lpBuffer ); } @@ -288,7 +280,7 @@ HB_FUNC( WIN_SETDLGITEMTEXT ) HB_FUNC( WIN_GETDLGITEMTEXT ) { - USHORT iLen = ( USHORT ) SendMessage( GetDlgItem( ( HWND ) ( HB_PTRDIFF ) hb_parnint( 1 ), hb_parni( 2 ) ), WM_GETTEXTLENGTH, 0, 0 ) + 1 ; + USHORT iLen = ( USHORT ) SendMessage( GetDlgItem( ( HWND ) ( HB_PTRDIFF ) hb_parnint( 1 ), hb_parni( 2 ) ), WM_GETTEXTLENGTH, 0, 0 ) + 1; LPTSTR cText = ( LPTSTR ) hb_xgrab( iLen * sizeof( TCHAR ) ); char * szText; UINT iResult; @@ -318,7 +310,7 @@ HB_FUNC( WIN_CHECKDLGBUTTON ) HB_FUNC( WIN_ISDLGBUTTONCHECKED ) { - hb_retni( IsDlgButtonChecked( ( HWND ) ( HB_PTRDIFF ) hb_parnint( 1 ), hb_parni( 2 ) ) ) ; + hb_retni( IsDlgButtonChecked( ( HWND ) ( HB_PTRDIFF ) hb_parnint( 1 ), hb_parni( 2 ) ) ); } /*----------------------------------------------------------------------*/ @@ -343,7 +335,7 @@ HB_FUNC( WIN_GETDLGITEM ) HB_FUNC( WIN_MESSAGEBOX ) { - HWND hWnd = ISNIL( 1 ) ? GetActiveWindow() : ( HWND ) ( HB_PTRDIFF ) hb_parnint( 1 ) ; + HWND hWnd = ISNIL( 1 ) ? GetActiveWindow() : ( HWND ) ( HB_PTRDIFF ) hb_parnint( 1 ); LPTSTR lpMsg = HB_TCHAR_CONVTO( hb_parcx( 2 ) ); LPTSTR lpTitle = HB_TCHAR_CONVTO( ISCHAR( 3 ) ? hb_parc( 3 ) : "Info" ); @@ -357,19 +349,19 @@ HB_FUNC( WIN_MESSAGEBOX ) HB_FUNC( WIN_INVALIDATERECT ) { - if( ISNIL( 2 ) ) - hb_retl( InvalidateRect( ( HWND ) ( HB_PTRDIFF ) hb_parnint( 1 ), NULL, TRUE ) ); - else + if( ISARRAY( 2 ) ) { RECT rc = { 0, 0, 0, 0 }; - rc.left = hb_parni( 2,1 ); - rc.top = hb_parni( 2,2 ); - rc.right = hb_parni( 2,3 ); - rc.bottom = hb_parni( 2,4 ); + rc.left = hb_parni( 2, 1 ); + rc.top = hb_parni( 2, 2 ); + rc.right = hb_parni( 2, 3 ); + rc.bottom = hb_parni( 2, 4 ); hb_retl( InvalidateRect( ( HWND ) ( HB_PTRDIFF ) hb_parnint( 1 ), &rc, TRUE ) ); } + else + hb_retl( InvalidateRect( ( HWND ) ( HB_PTRDIFF ) hb_parnint( 1 ), NULL, TRUE ) ); } /*----------------------------------------------------------------------*/ @@ -380,13 +372,13 @@ HB_FUNC( WIN_LOADICON ) { HICON hIcon; - if ( ISNUM( 1 ) ) + if( ISNUM( 1 ) ) { hIcon = LoadIcon( ( HINSTANCE ) wvg_hInstance(), MAKEINTRESOURCE( hb_parni( 1 ) ) ); } else { - LPTSTR lpBuffer = HB_TCHAR_CONVTO( hb_parc( 1 ) ); + LPTSTR lpBuffer = HB_TCHAR_CONVTO( hb_parcx( 1 ) ); hIcon = ( HICON ) LoadImage( ( HINSTANCE ) NULL, lpBuffer, IMAGE_ICON, 0, 0, LR_LOADFROMFILE ); HB_TCHAR_FREE( lpBuffer ); } @@ -404,10 +396,10 @@ HB_FUNC( WIN_LOADICON ) HB_FUNC( WIN_LOADIMAGE ) { HBITMAP hImage = 0; - LPTSTR lpBuffer = HB_TCHAR_CONVTO( hb_parc( 1 ) ); + LPTSTR lpBuffer = HB_TCHAR_CONVTO( hb_parcx( 1 ) ); int iSource = hb_parni( 2 ); - switch ( iSource ) + switch( iSource ) { case 0: hImage = LoadBitmap( ( HINSTANCE ) wvg_hInstance(), MAKEINTRESOURCE( hb_parni( 1 ) ) ); @@ -457,7 +449,7 @@ HB_FUNC( WIN_DRAWIMAGE ) HB_FUNC( WIN_GETDC ) { - hb_retnint( ( HB_PTRDIFF ) GetDC( ISNIL( 1 ) ? NULL : ( HWND ) ( HB_PTRDIFF ) hb_parnint( 1 ) ) ); + hb_retnint( ( HB_PTRDIFF ) GetDC( ( HWND ) ( HB_PTRDIFF ) hb_parnint( 1 ) ) ); } /*----------------------------------------------------------------------*/ @@ -472,7 +464,7 @@ HB_FUNC( WIN_CREATEBRUSH ) LOGBRUSH lb = { 0,0,0 }; lb.lbStyle = hb_parni( 1 ); - lb.lbColor = ISNIL( 2 ) ? RGB( 0, 0, 0 ) : ( COLORREF ) hb_parnl( 2 ) ; + lb.lbColor = ISNIL( 2 ) ? RGB( 0, 0, 0 ) : ( COLORREF ) hb_parnl( 2 ); lb.lbHatch = ISNIL( 3 ) ? 0 : hb_parni( 3 ); #if ! defined( HB_OS_WIN_CE ) hb_retnint( ( HB_PTRDIFF ) CreateBrushIndirect( &lb ) ); @@ -487,7 +479,7 @@ HB_FUNC( WIN_CREATEBRUSH ) HB_FUNC( WIN_DRAWTEXT ) { RECT rc = { 0,0,0,0 }; - LPTSTR lpBuffer = HB_TCHAR_CONVTO( hb_parc( 2 ) ); + LPTSTR lpBuffer = HB_TCHAR_CONVTO( hb_parcx( 2 ) ); rc.left = hb_parni( 3,1 ); rc.top = hb_parni( 3,2 ); @@ -521,7 +513,7 @@ HB_FUNC( WIN_GETWINDOWRECT ) */ HB_FUNC( WIN_MOVEWINDOW ) { - MoveWindow( (HWND) ( HB_PTRDIFF ) hb_parnint( 1 ), hb_parnl( 2 ), hb_parnl( 3 ), hb_parnl( 4 ), hb_parnl( 5 ), hb_parl( 6 ) ); + MoveWindow( ( HWND ) ( HB_PTRDIFF ) hb_parnint( 1 ), hb_parnl( 2 ), hb_parnl( 3 ), hb_parnl( 4 ), hb_parnl( 5 ), hb_parl( 6 ) ); } /*----------------------------------------------------------------------*/ @@ -535,7 +527,7 @@ HB_FUNC( WIN_GETDESKTOPWINDOW ) HB_FUNC( WIN_SETPARENT ) { - hb_retnint( ( HB_PTRDIFF ) SetParent( (HWND) ( HB_PTRDIFF ) hb_parnint( 1 ), (HWND) ( HB_PTRDIFF ) hb_parnint( 2 ) ) ); + hb_retnint( ( HB_PTRDIFF ) SetParent( ( HWND ) ( HB_PTRDIFF ) hb_parnint( 1 ), ( HWND ) ( HB_PTRDIFF ) hb_parnint( 2 ) ) ); } /*----------------------------------------------------------------------*/ @@ -556,7 +548,7 @@ HB_FUNC( WIN_SETFOREGROUNDWINDOW ) HB_FUNC( WIN_SETWINDOWTEXT ) { - LPTSTR text = HB_TCHAR_CONVTO( hb_parc( 2 ) ); + LPTSTR text = HB_TCHAR_CONVTO( hb_parcx( 2 ) ); SetWindowText( wvg_parhwnd( 1 ), text ); HB_TCHAR_FREE( text ); } @@ -572,7 +564,7 @@ HB_FUNC( WIN_SETWINDOWLONG ) HB_FUNC( WIN_ISWINDOW ) { - hb_retl( IsWindow( (HWND) ( HB_PTRDIFF ) hb_parnint( 1 ) ) ); + hb_retl( IsWindow( ( HWND ) ( HB_PTRDIFF ) hb_parnint( 1 ) ) ); } /*----------------------------------------------------------------------*/ @@ -586,78 +578,70 @@ HB_FUNC( WIN_ENABLEWINDOW ) HB_FUNC( WIN_DESTROYWINDOW ) { - hb_retl( DestroyWindow( (HWND) ( HB_PTRDIFF ) hb_parnint( 1 ) ) ); + hb_retl( DestroyWindow( ( HWND ) ( HB_PTRDIFF ) hb_parnint( 1 ) ) ); } /*----------------------------------------------------------------------*/ HB_FUNC( WIN_CLIENTTOSCREEN ) { - POINT Point ; + POINT Point; PHB_ITEM pArray = hb_param( 2 , HB_IT_ARRAY ); - if ( wvt_Array2Point( pArray ,&Point ) ) + if( wvt_Array2Point( pArray, &Point ) ) { - if ( ClientToScreen( (HWND) ( HB_PTRDIFF ) hb_parnint( 1 ), &Point ) ) + if( ClientToScreen( ( HWND ) ( HB_PTRDIFF ) hb_parnint( 1 ), &Point ) ) { wvt_Point2ArrayEx( &Point, pArray ); - hb_retl( TRUE ) ; + hb_retl( TRUE ); } else - { - hb_retl( FALSE ) ; - } + hb_retl( FALSE ); } else - { - hb_retl( FALSE ) ; - } + hb_retl( FALSE ); } /*----------------------------------------------------------------------*/ HB_FUNC( WIN_SCREENTOCLIENT ) { - POINT Point ; + POINT Point; PHB_ITEM pArray = hb_param( 2 , HB_IT_ARRAY ); - if ( wvt_Array2Point( pArray, &Point ) ) + if( wvt_Array2Point( pArray, &Point ) ) { - if( ScreenToClient( (HWND) ( HB_PTRDIFF ) hb_parnint( 1 ), &Point ) > 0 ) + if( ScreenToClient( ( HWND ) ( HB_PTRDIFF ) hb_parnint( 1 ), &Point ) > 0 ) { wvt_Point2ArrayEx( &Point, pArray ); - hb_retl( TRUE ) ; + hb_retl( TRUE ); } else - { - hb_retl( FALSE ) ; - } + hb_retl( FALSE ); } else - { - hb_retl( FALSE ) ; - } + hb_retl( FALSE ); } /*----------------------------------------------------------------------*/ HB_FUNC( WIN_AND ) { - hb_retnl( hb_parnl(1) & hb_parnl(2) ) ; + hb_retnl( hb_parnl(1) & hb_parnl(2) ); } /*----------------------------------------------------------------------*/ HB_FUNC( WIN_OR ) { - hb_retnl( hb_parnl(1) | hb_parnl(2) ) ; + hb_retnl( hb_parnl(1) | hb_parnl(2) ); } /*----------------------------------------------------------------------*/ HB_FUNC( WIN_NOT ) { - hb_retnl( ~( hb_parnl(1) ) ) ; + hb_retnl( ~( hb_parnl(1) ) ); } /*----------------------------------------------------------------------*/ @@ -689,29 +673,23 @@ HB_FUNC( WIN_TRACKPOPUPMENU ) HB_FUNC( WIN_CHOOSECOLOR ) { - CHOOSECOLOR cc ; - COLORREF crCustClr[ 16 ] ; - int i ; + CHOOSECOLOR cc; + COLORREF crCustClr[ 16 ]; + int i; - for( i = 0 ; i < 16 ; i++ ) - { - crCustClr[ i ] = ( ISARRAY( 2 ) ? ( COLORREF ) hb_parnl( 2, i+1 ) : GetSysColor( COLOR_BTNFACE ) ) ; - } + for( i = 0; i < HB_SIZEOFARRAY( crCustClr ); i++ ) + crCustClr[ i ] = ( ISARRAY( 2 ) ? ( COLORREF ) hb_parnl( 2, i+1 ) : GetSysColor( COLOR_BTNFACE ) ); - cc.lStructSize = sizeof( CHOOSECOLOR ) ; - cc.hwndOwner = ISNIL( 4 ) ? NULL : (HWND) ( HB_PTRDIFF ) hb_parnint( 4 ); - cc.rgbResult = ISNIL( 1 ) ? 0 : ( COLORREF ) hb_parnl( 1 ) ; - cc.lpCustColors = crCustClr ; + cc.lStructSize = sizeof( CHOOSECOLOR ); + cc.hwndOwner = ISNIL( 4 ) ? NULL : ( HWND ) ( HB_PTRDIFF ) hb_parnint( 4 ); + cc.rgbResult = ISNIL( 1 ) ? 0 : ( COLORREF ) hb_parnl( 1 ); + cc.lpCustColors = crCustClr; cc.Flags = ( WORD ) ( ISNIL( 3 ) ? CC_ANYCOLOR | CC_RGBINIT | CC_FULLOPEN : hb_parnl( 3 ) ); - if ( ChooseColor( &cc ) ) - { - hb_retnl( cc.rgbResult ) ; - } + if( ChooseColor( &cc ) ) + hb_retnl( cc.rgbResult ); else - { hb_retnl( -1 ); - } } /*----------------------------------------------------------------------*/ @@ -721,18 +699,14 @@ HB_FUNC( WIN_FINDWINDOW ) HWND hwnd; LPTSTR lpStr; - lpStr = HB_TCHAR_CONVTO( hb_parc( 1 ) ); + lpStr = HB_TCHAR_CONVTO( hb_parcx( 1 ) ); hwnd = FindWindow( NULL, lpStr ); HB_TCHAR_FREE( lpStr ); - if ( hwnd ) - { + if( hwnd ) hb_retnint( ( HB_PTRDIFF ) hwnd ); - } else - { hb_retnint( -1 ); - } } /*----------------------------------------------------------------------*/ @@ -795,18 +769,18 @@ HB_FUNC( WIN_CREATEPOPUPMENU ) HB_FUNC( WIN_APPENDMENU ) { LPTSTR buffer; - int i,iLen ; + int i, iLen; - if ( ISCHAR( 4 ) ) + if( ISCHAR( 4 ) ) { iLen = hb_parclen( 4 ); - if ( iLen > 0 && iLen < 256 ) /* Translate '~' to '&' */ + if( iLen > 0 && iLen < 256 ) /* Translate '~' to '&' */ { char * text = ( char * ) hb_xgrab( iLen + 1 ); memcpy( text, hb_parc( 4 ), iLen + 1 ); - for ( i = 0; i < iLen; i++ ) + for( i = 0; i < iLen; i++ ) { if( text[ i ] == '~' ) text[ i ] = '&'; @@ -863,7 +837,7 @@ HB_FUNC( WIN_CHECKMENUITEM ) HB_FUNC( WIN_DRAWMENUBAR ) { - DrawMenuBar( ( HWND ) ( HB_PTRDIFF ) hb_parnint( 1 ) ) ; + DrawMenuBar( ( HWND ) ( HB_PTRDIFF ) hb_parnint( 1 ) ); } /*----------------------------------------------------------------------*/ @@ -895,7 +869,7 @@ HB_FUNC( WIN_CREATEWINDOWEX ) LPTSTR szWinName; LPTSTR szClassName; - szClassName = HB_TCHAR_CONVTO( hb_parc( 2 ) ); + szClassName = HB_TCHAR_CONVTO( hb_parcx( 2 ) ); szWinName = HB_TCHAR_CONVTO( hb_parcx( 3 ) ); hWnd = CreateWindowEx( ( DWORD ) hb_parnint( 1 ), @@ -944,50 +918,50 @@ HB_FUNC( WIN_CREATETOOLBAREX ) /*----------------------------------------------------------------------*/ static BITMAPINFO * PackedDibLoad( PTSTR szFileName ) { - BITMAPFILEHEADER bmfh ; - BITMAPINFO * pbmi ; - BOOL bSuccess ; - DWORD dwPackedDibSize, dwBytesRead ; - HANDLE hFile ; + BITMAPFILEHEADER bmfh; + BITMAPINFO * pbmi; + BOOL bSuccess; + DWORD dwPackedDibSize, dwBytesRead; + HANDLE hFile; hFile = CreateFile( szFileName, GENERIC_READ, FILE_SHARE_READ, NULL, - OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN, NULL ) ; + OPEN_EXISTING, FILE_FLAG_SEQUENTIAL_SCAN, NULL ); if( hFile == INVALID_HANDLE_VALUE ) - return NULL ; + return NULL; - bSuccess = ReadFile( hFile, &bmfh, sizeof (BITMAPFILEHEADER), &dwBytesRead, NULL ) ; + bSuccess = ReadFile( hFile, &bmfh, sizeof (BITMAPFILEHEADER), &dwBytesRead, NULL ); if( !bSuccess || ( dwBytesRead != sizeof( BITMAPFILEHEADER ) ) || ( bmfh.bfType != * ( WORD * ) "BM" ) ) { - CloseHandle( hFile ) ; - return NULL ; + CloseHandle( hFile ); + return NULL; } - dwPackedDibSize = bmfh.bfSize - sizeof( BITMAPFILEHEADER ) ; + dwPackedDibSize = bmfh.bfSize - sizeof( BITMAPFILEHEADER ); - pbmi = ( BITMAPINFO * ) hb_xgrab( dwPackedDibSize ) ; + pbmi = ( BITMAPINFO * ) hb_xgrab( dwPackedDibSize ); - bSuccess = ReadFile( hFile, pbmi, dwPackedDibSize, &dwBytesRead, NULL ) ; - CloseHandle( hFile ) ; + bSuccess = ReadFile( hFile, pbmi, dwPackedDibSize, &dwBytesRead, NULL ); + CloseHandle( hFile ); - if ( !bSuccess || ( dwBytesRead != dwPackedDibSize ) ) + if( !bSuccess || ( dwBytesRead != dwPackedDibSize ) ) { - hb_xfree( pbmi ) ; - return NULL ; + hb_xfree( pbmi ); + return NULL; } - return pbmi ; + return pbmi; } #if ! defined( HB_OS_WIN_CE ) static int PackedDibGetWidth( BITMAPINFO * pPackedDib ) { if( pPackedDib->bmiHeader.biSize == sizeof( BITMAPCOREHEADER ) ) - return ( ( PBITMAPCOREINFO ) pPackedDib )->bmciHeader.bcWidth ; + return ( ( PBITMAPCOREINFO ) pPackedDib )->bmciHeader.bcWidth; else - return pPackedDib->bmiHeader.biWidth ; + return pPackedDib->bmiHeader.biWidth; } #endif @@ -995,9 +969,9 @@ static int PackedDibGetWidth( BITMAPINFO * pPackedDib ) static int PackedDibGetHeight( BITMAPINFO * pPackedDib ) { if( pPackedDib->bmiHeader.biSize == sizeof( BITMAPCOREHEADER ) ) - return ( ( PBITMAPCOREINFO ) pPackedDib )->bmciHeader.bcHeight ; + return ( ( PBITMAPCOREINFO ) pPackedDib )->bmciHeader.bcHeight; else - return abs( pPackedDib->bmiHeader.biHeight ) ; + return abs( pPackedDib->bmiHeader.biHeight ); } #endif @@ -1005,9 +979,9 @@ static int PackedDibGetHeight( BITMAPINFO * pPackedDib ) static int PackedDibGetBitCount( BITMAPINFO * pPackedDib ) { if( pPackedDib->bmiHeader.biSize == sizeof( BITMAPCOREHEADER ) ) - return ( ( PBITMAPCOREINFO ) pPackedDib )->bmciHeader.bcBitCount ; + return ( ( PBITMAPCOREINFO ) pPackedDib )->bmciHeader.bcBitCount; else - return pPackedDib->bmiHeader.biBitCount ; + return pPackedDib->bmiHeader.biBitCount; } #endif @@ -1015,13 +989,13 @@ static int PackedDibGetBitCount( BITMAPINFO * pPackedDib ) static int PackedDibGetInfoHeaderSize( BITMAPINFO * pPackedDib ) { if( pPackedDib->bmiHeader.biSize == sizeof( BITMAPCOREHEADER ) ) - return ( ( PBITMAPCOREINFO ) pPackedDib )->bmciHeader.bcSize ; + return ( ( PBITMAPCOREINFO ) pPackedDib )->bmciHeader.bcSize; else if( pPackedDib->bmiHeader.biSize == sizeof( BITMAPINFOHEADER ) ) return pPackedDib->bmiHeader.biSize + - ( pPackedDib->bmiHeader.biCompression == BI_BITFIELDS ? 12 : 0 ) ; + ( pPackedDib->bmiHeader.biCompression == BI_BITFIELDS ? 12 : 0 ); - else return pPackedDib->bmiHeader.biSize ; + else return pPackedDib->bmiHeader.biSize; } #endif @@ -1029,23 +1003,23 @@ static int PackedDibGetInfoHeaderSize( BITMAPINFO * pPackedDib ) static int PackedDibGetColorsUsed( BITMAPINFO * pPackedDib ) { if( pPackedDib->bmiHeader.biSize == sizeof( BITMAPCOREHEADER ) ) - return 0 ; + return 0; else - return pPackedDib->bmiHeader.biClrUsed ; + return pPackedDib->bmiHeader.biClrUsed; } #endif #if ! defined( HB_OS_WIN_CE ) static int PackedDibGetNumColors( BITMAPINFO * pPackedDib ) { - int iNumColors ; + int iNumColors; - iNumColors = PackedDibGetColorsUsed( pPackedDib ) ; + iNumColors = PackedDibGetColorsUsed( pPackedDib ); if( iNumColors == 0 && PackedDibGetBitCount( pPackedDib ) < 16 ) - iNumColors = 1 << PackedDibGetBitCount( pPackedDib ) ; + iNumColors = 1 << PackedDibGetBitCount( pPackedDib ); - return iNumColors ; + return iNumColors; } #endif @@ -1053,9 +1027,9 @@ static int PackedDibGetNumColors( BITMAPINFO * pPackedDib ) static int PackedDibGetColorTableSize( BITMAPINFO * pPackedDib ) { if( pPackedDib->bmiHeader.biSize == sizeof( BITMAPCOREHEADER ) ) - return PackedDibGetNumColors( pPackedDib ) * sizeof( RGBTRIPLE ) ; + return PackedDibGetNumColors( pPackedDib ) * sizeof( RGBTRIPLE ); else - return PackedDibGetNumColors( pPackedDib ) * sizeof( RGBQUAD ) ; + return PackedDibGetNumColors( pPackedDib ) * sizeof( RGBQUAD ); } #endif @@ -1063,27 +1037,27 @@ static int PackedDibGetColorTableSize( BITMAPINFO * pPackedDib ) static RGBQUAD * PackedDibGetColorTablePtr( BITMAPINFO * pPackedDib ) { if( PackedDibGetNumColors( pPackedDib ) == 0 ) - return 0 ; + return 0; - return ( RGBQUAD * ) ( ( ( BYTE * ) pPackedDib ) + PackedDibGetInfoHeaderSize( pPackedDib ) ) ; + return ( RGBQUAD * ) ( ( ( BYTE * ) pPackedDib ) + PackedDibGetInfoHeaderSize( pPackedDib ) ); } static RGBQUAD * PackedDibGetColorTableEntry( BITMAPINFO * pPackedDib, int i ) { if( PackedDibGetNumColors( pPackedDib ) == 0 ) - return 0 ; + return 0; if( pPackedDib->bmiHeader.biSize == sizeof( BITMAPCOREHEADER ) ) - return ( RGBQUAD * ) ( ( ( RGBTRIPLE * ) PackedDibGetColorTablePtr( pPackedDib ) ) + i ) ; + return ( RGBQUAD * ) ( ( ( RGBTRIPLE * ) PackedDibGetColorTablePtr( pPackedDib ) ) + i ); else - return PackedDibGetColorTablePtr( pPackedDib ) + i ; + return PackedDibGetColorTablePtr( pPackedDib ) + i; } #endif #if ! defined( HB_OS_WIN_CE ) static BYTE * PackedDibGetBitsPtr( BITMAPINFO * pPackedDib ) { return ( ( BYTE * ) pPackedDib ) + PackedDibGetInfoHeaderSize( pPackedDib ) + - PackedDibGetColorTableSize( pPackedDib ) ; + PackedDibGetColorTableSize( pPackedDib ); } #endif static HBITMAP hPrepareBitmap( char * szBitmapX, UINT uiBitmap, @@ -1097,161 +1071,152 @@ static HBITMAP hPrepareBitmap( char * szBitmapX, UINT uiBitmap, switch( iMode ) { case 0: - { - if( szBitmapX ) - { - int iWidth, iHeight; + + if( szBitmapX ) { - BITMAPINFO * pPackedDib = NULL; - HDC hdc; + int iWidth, iHeight; + { + BITMAPINFO * pPackedDib = NULL; + HDC hdc; + TCHAR * szBitmap; + + szBitmap = HB_TCHAR_CONVTO( szBitmapX ); + + if( ! bMap3Dcolors ) + pPackedDib = PackedDibLoad( szBitmap ); + + if( pPackedDib || bMap3Dcolors ) + { + hdc = GetDC( hCtrl ); + + if( !bMap3Dcolors ) + { +#if ! defined( HB_OS_WIN_CE ) + hBitmap = CreateDIBitmap( hdc, + ( PBITMAPINFOHEADER ) pPackedDib, + CBM_INIT, + PackedDibGetBitsPtr( pPackedDib ), + pPackedDib, + DIB_RGB_COLORS ); + if( hBitmap == NULL ) + return NULL; + + iWidth = PackedDibGetWidth( pPackedDib ); + iHeight = PackedDibGetHeight( pPackedDib ); +#else + return NULL; +#endif + } + else + { + hBitmap = ( HBITMAP ) LoadImage( ( HINSTANCE ) NULL, + szBitmap, + IMAGE_BITMAP, + iExpWidth, + iExpHeight, + LR_LOADFROMFILE | LR_LOADMAP3DCOLORS ); + if( hBitmap == NULL ) + return NULL; + + iWidth = iExpWidth; + iHeight = iExpHeight; + } + + if( iExpWidth == 0 && iExpHeight == 0 ) + { + iWidth = iExpWidth; + iHeight = iExpHeight; + } + + if( iExpWidth != iWidth || iExpHeight != iHeight ) + { + HDC hdcSource, hdcTarget; + HBITMAP hBitmap2; + BOOL bResult; + + hdcSource = CreateCompatibleDC( hdc ); + SelectObject( hdcSource, hBitmap ); + + hdcTarget = CreateCompatibleDC( hdc ); + hBitmap2 = CreateCompatibleBitmap( hdcSource, iExpWidth, iExpHeight ); + SelectObject( hdcTarget, hBitmap2 ); + + bResult = StretchBlt( + hdcTarget, /* handle to destination DC */ + 0, /* x-coord of destination upper-left corner */ + 0, /* y-coord of destination upper-left corner */ + iExpWidth, /* width of destination rectangle */ + iExpHeight, /* height of destination rectangle */ + hdcSource, /* handle to source DC */ + 0, /* x-coord of source upper-left corner */ + 0, /* y-coord of source upper-left corner */ + iWidth, /* width of source rectangle */ + iHeight, /* height of source rectangle */ + SRCCOPY /* raster operation code */ + ); + + if( !bResult ) + { + DeleteObject( hBitmap2 ); + } + else + { + DeleteObject( hBitmap ); + hBitmap = hBitmap2; + } + + DeleteDC( hdcSource ); + DeleteDC( hdcTarget ); + } + + HB_TCHAR_FREE( szBitmap ); + ReleaseDC( hCtrl, hdc ); + if( pPackedDib ) + hb_xfree( pPackedDib ); + } + } + } + break; + case 1: + { + UINT uiOptions = bMap3Dcolors ? LR_LOADMAP3DCOLORS : LR_DEFAULTCOLOR; TCHAR * szBitmap; szBitmap = HB_TCHAR_CONVTO( szBitmapX ); - if( !bMap3Dcolors ) - { - pPackedDib = PackedDibLoad( szBitmap ); - } - - if( pPackedDib || bMap3Dcolors ) - { - hdc = GetDC( hCtrl ); - - if( !bMap3Dcolors ) - { -#if ! defined( HB_OS_WIN_CE ) - hBitmap = CreateDIBitmap( hdc, - ( PBITMAPINFOHEADER ) pPackedDib, - CBM_INIT, - PackedDibGetBitsPtr( pPackedDib ), - pPackedDib, - DIB_RGB_COLORS ) ; - if( hBitmap == NULL ) - { - return NULL; - } - - iWidth = PackedDibGetWidth( pPackedDib ); - iHeight = PackedDibGetHeight( pPackedDib ); -#else - return NULL; -#endif - } - else - { - hBitmap = ( HBITMAP ) LoadImage( ( HINSTANCE ) NULL, - szBitmap, + hBitmap = ( HBITMAP ) LoadImage( + ( HINSTANCE ) wvg_hInstance(), + ( LPCTSTR ) szBitmap, IMAGE_BITMAP, iExpWidth, iExpHeight, - LR_LOADFROMFILE | LR_LOADMAP3DCOLORS ); - if( hBitmap == NULL ) - { - return NULL; - } - iWidth = iExpWidth; - iHeight = iExpHeight; - } - - if( iExpWidth == 0 && iExpHeight == 0 ) - { - iWidth = iExpWidth; - iHeight = iExpHeight; - } - - if( iExpWidth != iWidth || iExpHeight != iHeight ) - { - HDC hdcSource, hdcTarget; - HBITMAP hBitmap2; - BOOL bResult; - - hdcSource = CreateCompatibleDC( hdc ); - SelectObject( hdcSource, hBitmap ); - - hdcTarget = CreateCompatibleDC( hdc ); - hBitmap2 = CreateCompatibleBitmap( hdcSource, iExpWidth, iExpHeight ); - SelectObject( hdcTarget, hBitmap2 ); - - bResult = StretchBlt( - hdcTarget, /* handle to destination DC */ - 0, /* x-coord of destination upper-left corner */ - 0, /* y-coord of destination upper-left corner */ - iExpWidth, /* width of destination rectangle */ - iExpHeight, /* height of destination rectangle */ - hdcSource, /* handle to source DC */ - 0, /* x-coord of source upper-left corner */ - 0, /* y-coord of source upper-left corner */ - iWidth, /* width of source rectangle */ - iHeight, /* height of source rectangle */ - SRCCOPY /* raster operation code */ - ); - - if( !bResult ) - { - DeleteObject( hBitmap2 ); - } - else - { - DeleteObject( hBitmap ); - hBitmap = hBitmap2; - } - - DeleteDC( hdcSource ); - DeleteDC( hdcTarget ); - } - - HB_TCHAR_FREE( szBitmap ); - ReleaseDC( hCtrl, hdc ) ; - if( pPackedDib ) - { - hb_xfree( pPackedDib ) ; - } + uiOptions ); + HB_TCHAR_FREE( szBitmap ); + if( hBitmap == NULL ) + { + return NULL; } } - } - } - break; - case 1: - { - UINT uiOptions = bMap3Dcolors ? LR_LOADMAP3DCOLORS : LR_DEFAULTCOLOR; - TCHAR * szBitmap; - - szBitmap = HB_TCHAR_CONVTO( szBitmapX ); - - hBitmap = ( HBITMAP ) LoadImage( - ( HINSTANCE ) wvg_hInstance(), - ( LPCTSTR ) szBitmap, - IMAGE_BITMAP, - iExpWidth, - iExpHeight, - uiOptions ); - HB_TCHAR_FREE( szBitmap ); - if( hBitmap == NULL ) - { - return NULL; - } - } - break; + break; case 2: /* loading from resourceid */ - { - UINT uiOptions = bMap3Dcolors ? LR_LOADMAP3DCOLORS : LR_DEFAULTCOLOR; - char szResname[ MAX_PATH + 1 ]; - - hb_snprintf( szResname, sizeof( szResname ), "?%u", uiBitmap ); - - hBitmap = ( HBITMAP ) LoadImage( - ( HINSTANCE ) wvg_hInstance(), - ( LPCTSTR ) MAKEINTRESOURCE( ( WORD ) uiBitmap ), - IMAGE_BITMAP, - iExpWidth, - iExpHeight, - uiOptions ); - if( hBitmap == NULL ) { - return NULL; - } - } /* loading from resources */ - break; + UINT uiOptions = bMap3Dcolors ? LR_LOADMAP3DCOLORS : LR_DEFAULTCOLOR; + char szResname[ MAX_PATH + 1 ]; + + hb_snprintf( szResname, sizeof( szResname ), "?%u", uiBitmap ); + + hBitmap = ( HBITMAP ) LoadImage( + ( HINSTANCE ) wvg_hInstance(), + ( LPCTSTR ) MAKEINTRESOURCE( ( WORD ) uiBitmap ), + IMAGE_BITMAP, + iExpWidth, + iExpHeight, + uiOptions ); + if( hBitmap == NULL ) + return NULL; + + } /* loading from resources */ + break; } return hBitmap; @@ -1298,7 +1263,7 @@ HB_FUNC( WVG_STATUSBARCREATEPANEL ) HWND hWndSB = ( HWND ) ( HB_PTRDIFF ) hb_parnint( 1 ); int iMode = hb_parni( 2 ); - if ( hWndSB == NULL || !IsWindow( hWndSB ) ) + if( hWndSB == NULL || !IsWindow( hWndSB ) ) { hb_retl( FALSE ); return; @@ -1311,7 +1276,7 @@ HB_FUNC( WVG_STATUSBARCREATEPANEL ) int ptArray[ WIN_STATUSBAR_MAX_PARTS ]; int iParts; RECT rc = { 0, 0, 0, 0 }; - int n ; + int n; USHORT width; iParts = ( int ) SendMessage( hWndSB, SB_GETPARTS, ( WPARAM ) WIN_STATUSBAR_MAX_PARTS, ( LPARAM ) ( LPINT ) ptArray ); @@ -1319,9 +1284,8 @@ HB_FUNC( WVG_STATUSBARCREATEPANEL ) GetClientRect( hWndSB, &rc ); width = ( USHORT ) ( rc.right / ( iParts + 1 ) ); for( n = 0; n < iParts; n++ ) - { ptArray[ n ] = ( width * ( n + 1 ) ); - } + ptArray[ iParts ] = -1; if( SendMessage( hWndSB, SB_SETPARTS, ( WPARAM ) iParts + 1, ( LPARAM ) ( LPINT ) ptArray ) ) @@ -1335,7 +1299,7 @@ HB_FUNC( WVG_STATUSBARCREATEPANEL ) RECT rc = { 0, 0, 0, 0 }; int ptArray[ WIN_STATUSBAR_MAX_PARTS ]; - if ( GetClientRect( hWndSB, &rc ) ) + if( GetClientRect( hWndSB, &rc ) ) { ptArray[ 0 ] = rc.right; @@ -1358,7 +1322,7 @@ HB_FUNC( WVG_STATUSBARSETTEXT ) if( hWndSB && IsWindow( hWndSB ) ) { - int iPart = ISNIL( 2 ) ? 1 : hb_parni( 2 ); + int iPart = ISNUM( 2 ) ? hb_parni( 2 ) : 1; TCHAR szText[ 1024 ]; int iFlags; TCHAR *szCaption; @@ -1367,7 +1331,7 @@ HB_FUNC( WVG_STATUSBARSETTEXT ) iFlags = ( int ) HIWORD( SendMessage( hWndSB, SB_GETTEXT, ( WPARAM ) iPart, ( LPARAM ) szText ) ); - szCaption = HB_TCHAR_CONVTO( hb_parc( 3 ) ); + szCaption = HB_TCHAR_CONVTO( hb_parcx( 3 ) ); SendMessage( hWndSB, SB_SETTEXT, ( WPARAM ) iPart | iFlags, ( LPARAM ) szCaption ); HB_TCHAR_FREE( szCaption ); } @@ -1403,7 +1367,7 @@ HB_FUNC( WVG_STATUSBARREFRESH ) HB_FUNC( WIN_SENDMESSAGETEXT ) { - LPTSTR lpBuffer = HB_TCHAR_CONVTO( hb_parc( 4 ) ); + LPTSTR lpBuffer = HB_TCHAR_CONVTO( hb_parcx( 4 ) ); SendMessage( ( HWND ) ( HB_PTRDIFF ) hb_parnint( 1 ), hb_parni( 2 ), ( WPARAM ) hb_parni( 3 ), ( LPARAM ) lpBuffer ); @@ -1433,10 +1397,10 @@ HB_FUNC( WIN_SETWNDPROC ) WNDPROC wndProc = ( WNDPROC ) ( HB_PTRDIFF ) hb_parnint( 2 ); WNDPROC oldProc; -#if (defined(_MSC_VER) && (_MSC_VER <= 1200 || defined(HB_OS_WIN_CE)) || defined(__DMC__)) && !defined(HB_ARCH_64BIT) - oldProc = ( WNDPROC ) SetWindowLong( hWnd, GWL_WNDPROC, ( long ) wndProc ) ; +#if ( defined(_MSC_VER) && (_MSC_VER <= 1200 || defined(HB_OS_WIN_CE)) || defined(__DMC__)) && !defined(HB_ARCH_64BIT) + oldProc = ( WNDPROC ) SetWindowLong( hWnd, GWL_WNDPROC, ( long ) wndProc ); #else - oldProc = ( WNDPROC ) SetWindowLongPtr( hWnd, GWLP_WNDPROC, ( HB_PTRDIFF ) wndProc ) ; + oldProc = ( WNDPROC ) SetWindowLongPtr( hWnd, GWLP_WNDPROC, ( HB_PTRDIFF ) wndProc ); #endif hb_retnint( ( HB_PTRDIFF ) oldProc ); @@ -1507,12 +1471,12 @@ HB_FUNC( WVG_GETNMMOUSEINFO ) HB_FUNC( WVG_SETTOOLBARBUTTONTIP ) { LPNMTBGETINFOTIP lptbgit = ( LPNMTBGETINFOTIP ) wapi_par_LPARAM( 1 ); - LPTSTR pszText = HB_TCHAR_CONVTO( hb_parc( 2 ) ); + LPTSTR pszText = HB_TCHAR_CONVTO( hb_parcx( 2 ) ); - lptbgit->cchTextMax = strlen( hb_parc( 2 ) ); - //memcpy( lptbgit->pszText, pszText, strlen( hb_parc( 2 ) ) ); + lptbgit->cchTextMax = strlen( hb_parcx( 2 ) ); + //memcpy( lptbgit->pszText, pszText, strlen( hb_parcx( 2 ) ) ); lptbgit->pszText = pszText; -//hb_ToOutDebug( hb_parc( 2 ) ); +//hb_ToOutDebug( hb_parcx( 2 ) ); // HB_TCHAR_FREE( pszText ); } #endif @@ -1622,14 +1586,14 @@ HB_FUNC( WVG_TREEVIEW_GETSELECTIONINFO ) HB_FUNC( WVG_TREEVIEW_ADDITEM ) { TVINSERTSTRUCT tvis; - LPTSTR text = HB_TCHAR_CONVTO( hb_parc( 3 ) ); + LPTSTR text = HB_TCHAR_CONVTO( hb_parcx( 3 ) ); tvis.hInsertAfter = TVI_LAST; tvis.item.mask = TVIF_TEXT | TVIF_IMAGE | TVIF_SELECTEDIMAGE | TVIF_STATE; tvis.item.cchTextMax = MAX_PATH + 1; tvis.item.stateMask = TVIS_BOLD | TVIS_CUT | TVIS_DROPHILITED | TVIS_EXPANDEDONCE | TVIS_SELECTED | TVIS_EXPANDPARTIAL | - TVIS_OVERLAYMASK | TVIS_STATEIMAGEMASK | TVIS_USERMASK ; + TVIS_OVERLAYMASK | TVIS_STATEIMAGEMASK | TVIS_USERMASK; tvis.item.state = 0; /* TVI_BOLD */ tvis.hParent = ISNIL( 2 ) ? NULL : ( HTREEITEM ) wvg_parhandle( 2 ); @@ -1913,7 +1877,7 @@ PHB_ITEM wvg_logfontTOarray( LPLOGFONT lf, BOOL bEmpty ) /*----------------------------------------------------------------------*/ /* - * Wvg_ChooseFont( hWnd, nWndProc, familyName, nominalPointSize, ; + * Wvg_ChooseFont( hWnd, nWndProc, familyName, nominalPointSize,; * viewScreenFonts, viewPrinterFonts ) */ HB_FUNC( WVG_CHOOSEFONT ) @@ -1926,14 +1890,14 @@ HB_FUNC( WVG_CHOOSEFONT ) HWND hWnd = wvg_parhwnd( 1 ); TCHAR szStyle[ MAX_PATH + 1 ]; - if ( ISCHAR( 3 ) ) + if( ISCHAR( 3 ) ) { - HB_TCHAR_CPTO( lf.lfFaceName, hb_parc( 3 ), sizeof( lf.lfFaceName ) - 1 ); + HB_TCHAR_CPTO( lf.lfFaceName, hb_parcx( 3 ), sizeof( lf.lfFaceName ) - 1 ); } - if ( ( ! ISNIL( 4 ) ) && hb_parnl( 4 ) ) + if( ( ! ISNIL( 4 ) ) && hb_parnl( 4 ) ) { HDC hdc = GetDC( hWnd ); - PointSize = -MulDiv( ( LONG ) hb_parnl( 4 ), GetDeviceCaps( hdc, LOGPIXELSY ), 72 ) ; + PointSize = -MulDiv( ( LONG ) hb_parnl( 4 ), GetDeviceCaps( hdc, LOGPIXELSY ), 72 ); ReleaseDC( hWnd, hdc ); } lf.lfHeight = PointSize; @@ -1978,7 +1942,7 @@ HB_FUNC( WVG_CHOOSEFONT ) cf.nSizeMin = 0; cf.nSizeMax = 0; - if ( ChooseFont( &cf ) ) + if( ChooseFont( &cf ) ) { PHB_ITEM aFont = wvg_logfontTOarray( &lf, FALSE ); PHB_ITEM aInfo = hb_itemNew( NULL ); @@ -2027,7 +1991,7 @@ HB_FUNC( WVG_FONTCREATE ) memset( &lf, 0, sizeof( LOGFONT ) ); - HB_TCHAR_CPTO( lf.lfFaceName, hb_parc( 1, 1 ), sizeof( lf.lfFaceName ) - 1 ); + HB_TCHAR_CPTO( lf.lfFaceName, hb_parcx( 1, 1 ), sizeof( lf.lfFaceName ) - 1 ); lf.lfHeight = ( LONG ) hb_parnl( 1, 2 ); lf.lfWidth = ( LONG ) hb_parnl( 1, 3 ); lf.lfWeight = ( LONG ) hb_parnl( 1, 4 ); @@ -2065,7 +2029,7 @@ HB_FUNC( WVG_POINTSIZETOHEIGHT ) { HDC hdc = ISNIL( 1 ) ? GetDC( GetDesktopWindow() ) : wvg_parhdc( 1 ); - hb_retnl( ( LONG ) -MulDiv( ( LONG ) hb_parnl( 2 ), GetDeviceCaps( hdc, LOGPIXELSY ), 72 ) ) ; + hb_retnl( ( LONG ) -MulDiv( ( LONG ) hb_parnl( 2 ), GetDeviceCaps( hdc, LOGPIXELSY ), 72 ) ); if( ISNIL( 1 ) ) ReleaseDC( GetDesktopWindow(), hdc ); @@ -2079,7 +2043,7 @@ HB_FUNC( WVG_HEIGHTTOPOINTSIZE ) { HDC hdc = ISNIL( 1 ) ? GetDC( GetDesktopWindow() ) : wvg_parhdc( 1 ); - hb_retnl( ( LONG ) -MulDiv( hb_parnl( 2 ), 72, GetDeviceCaps( hdc, LOGPIXELSY ) ) ) ; + hb_retnl( ( LONG ) -MulDiv( hb_parnl( 2 ), 72, GetDeviceCaps( hdc, LOGPIXELSY ) ) ); if( ISNIL( 1 ) ) ReleaseDC( GetDesktopWindow(), hdc ); @@ -2160,7 +2124,7 @@ HB_FUNC( WVG_ADDTOOLBARBUTTON ) iNewBitmap = ( int ) SendMessage( hWndTB, TB_ADDBITMAP, ( WPARAM ) 1, ( LPARAM ) &tbab ); /* set string */ - szCaption = HB_TCHAR_CONVTO( hb_parc( 3 ) ); + szCaption = HB_TCHAR_CONVTO( hb_parcx( 3 ) ); iNewString = ( int ) SendMessage( hWndTB, TB_ADDSTRING, ( WPARAM ) 0, ( LPARAM ) szCaption ); HB_TCHAR_FREE( szCaption ); @@ -2234,7 +2198,7 @@ HB_FUNC( WIN_SENDTOOLBARMESSAGE ) tbb.iBitmap = wapi_par_INT( 3 ); tbb.idCommand = wapi_par_INT( 4 ); tbb.fsState = TBSTATE_ENABLED; - tbb.fsStyle = TBSTYLE_BUTTON ; + tbb.fsStyle = TBSTYLE_BUTTON; tbb.dwData = 0; tbb.iString = wapi_par_INT( 5 ); @@ -2246,7 +2210,7 @@ HB_FUNC( WIN_SENDTOOLBARMESSAGE ) int iString; LPTSTR szCaption; - szCaption = HB_TCHAR_CONVTO( hb_parc( 3 ) ); + szCaption = HB_TCHAR_CONVTO( hb_parcx( 3 ) ); iString = ( int ) SendMessage( hTB, TB_ADDSTRING, ( WPARAM ) NULL, ( LPARAM ) szCaption ); HB_TCHAR_FREE( szCaption ); @@ -2388,7 +2352,7 @@ HB_FUNC( WIN_SENDTOOLBARMESSAGE ) HB_FUNC( WVG_REGISTERCLASS_BYNAME ) { WNDCLASS wndclass; - LPTSTR szClass = HB_TCHAR_CONVTO( hb_parc( 1 ) ); + LPTSTR szClass = HB_TCHAR_CONVTO( hb_parcx( 1 ) ); memset( &wndclass, 0, sizeof( WNDCLASS ) ); wndclass.style = CS_HREDRAW | CS_VREDRAW | CS_DBLCLKS; @@ -2402,11 +2366,8 @@ HB_FUNC( WVG_REGISTERCLASS_BYNAME ) if( ! RegisterClass( &wndclass ) ) { - int iError = GetLastError(); - if( iError != 1410 ) - { + if( GetLastError() != 1410 ) hb_errInternal( 10001, "Failed to register DA window class", NULL, NULL ); - } } HB_TCHAR_FREE( szClass ); } @@ -2435,7 +2396,7 @@ HB_FUNC( WVG_BEGINMOUSETRACKING ) TRACKMOUSEEVENT tmi; tmi.cbSize = sizeof( TRACKMOUSEEVENT ); - tmi.dwFlags = TME_LEAVE | TME_HOVER ; + tmi.dwFlags = TME_LEAVE | TME_HOVER; tmi.hwndTrack = wapi_par_HWND( 1 ); tmi.dwHoverTime = 1; wapi_ret_L( _TrackMouseEvent( &tmi ) ); @@ -2485,9 +2446,9 @@ HB_FUNC( WVG_SETWINDOWPROCBLOCK ) SetProp( hWnd, TEXT( "BLOCKCALLBACK" ), pBlock ); #if (defined(_MSC_VER) && (_MSC_VER <= 1200 || defined(HB_OS_WIN_CE)) || defined(__DMC__)) && !defined(HB_ARCH_64BIT) - oldProc = ( WNDPROC ) SetWindowLong( hWnd, GWL_WNDPROC, ( long ) ControlWindowProcedure ) ; + oldProc = ( WNDPROC ) SetWindowLong( hWnd, GWL_WNDPROC, ( long ) ControlWindowProcedure ); #else - oldProc = ( WNDPROC ) SetWindowLongPtr( hWnd, GWLP_WNDPROC, ( HB_PTRDIFF ) ControlWindowProcedure ) ; + oldProc = ( WNDPROC ) SetWindowLongPtr( hWnd, GWLP_WNDPROC, ( HB_PTRDIFF ) ControlWindowProcedure ); #endif hb_retnint( ( HB_PTRDIFF ) oldProc ); @@ -2501,9 +2462,7 @@ HB_FUNC( WVG_RELEASEWINDOWPROCBLOCK ) PHB_ITEM pBlock = ( PHB_ITEM ) RemoveProp( hWnd, TEXT( "BLOCKCALLBACK" ) ); if( pBlock ) - { hb_itemRelease( pBlock ); - } } /*----------------------------------------------------------------------*/ diff --git a/harbour/contrib/rddads/Makefile b/harbour/contrib/rddads/Makefile index 37c43996e7..7b35a93b7f 100644 --- a/harbour/contrib/rddads/Makefile +++ b/harbour/contrib/rddads/Makefile @@ -26,6 +26,7 @@ C_SOURCES=\ PRG_HEADERS=\ ads.ch \ + adsextrn.ch \ include $(TOP)$(ROOT)config/header.cf INSTALL_RULE_HEADERS := $(INSTALL_RULE) diff --git a/harbour/contrib/rddads/ads1.c b/harbour/contrib/rddads/ads1.c index 8fbe1b33d1..778f68d45d 100644 --- a/harbour/contrib/rddads/ads1.c +++ b/harbour/contrib/rddads/ads1.c @@ -576,7 +576,7 @@ static HB_ERRCODE adsScopeSet( ADSAREAP pArea, ADSHANDLE hOrder, USHORT nScope, UNSIGNED16 ucLen = ( UNSIGNED16 ) hb_itemGetCLen( pItem ); UNSIGNED8 *pucScope = ( UNSIGNED8 * ) hb_itemGetCPtr( pItem ); #if defined( ADS_USE_OEM_TRANSLATION ) && ADS_LIB_VERSION < 600 - UNSIGNED8 pszKeyFree = NULL; + UNSIGNED8 * pszKeyFree = NULL; #endif #ifdef ADS_USE_OEM_TRANSLATION if( hb_ads_bOEM ) @@ -584,14 +584,14 @@ static HB_ERRCODE adsScopeSet( ADSAREAP pArea, ADSHANDLE hOrder, USHORT nScope, #if ADS_LIB_VERSION >= 600 u16DataType = ADS_RAWKEY; #else - pucScope = pszKeyFree = ( UNSIGNED8 * ) hb_adsOemToAnsi( ( char * ) pucScope, uiLen ); + pucScope = pszKeyFree = ( UNSIGNED8 * ) hb_adsOemToAnsi( ( char * ) pucScope, ucLen ); #endif } #endif AdsSetScope( hOrder, nScope, pucScope, ucLen, u16DataType ); #if defined( ADS_USE_OEM_TRANSLATION ) && ADS_LIB_VERSION < 600 if( pszKeyFree ) - hb_adsOemAnsiFree( pszKeyFree ); + hb_adsOemAnsiFree( ( char * ) pszKeyFree ); #endif } break; @@ -944,12 +944,12 @@ static HB_ERRCODE adsSeek( ADSAREAP pArea, BOOL bSoftSeek, PHB_ITEM pKey, BOOL b UNSIGNED32 u32RecNo = 0, u32NewRec; UNSIGNED16 u16SeekType = ( bSoftSeek ) ? ADS_SOFTSEEK : ADS_HARDSEEK, u16KeyType, u16Found, u16KeyLen; - UNSIGNED8 *pszKey, pKeyBuf[ 8 ]; + UNSIGNED8 * pszKey, pKeyBuf[ 8 ]; double dValue; - UNSIGNED8 *pucSavedKey = NULL; + UNSIGNED8 * pucSavedKey = NULL; UNSIGNED16 u16SavedKeyLen = ADS_MAX_KEY_LENGTH; /* this may be longer than the actual seek expression, so we don't pass it along */ #if defined( ADS_USE_OEM_TRANSLATION ) && ADS_LIB_VERSION < 600 - UNSIGNED8 pszKeyFree = NULL; + UNSIGNED8 * pszKeyFree = NULL; #endif HB_TRACE(HB_TR_DEBUG, ("adsSeek(%p, %d, %p, %d)", pArea, bSoftSeek, pKey, bFindLast)); @@ -999,7 +999,7 @@ static HB_ERRCODE adsSeek( ADSAREAP pArea, BOOL bSoftSeek, PHB_ITEM pKey, BOOL b else { dValue = hb_itemGetTD( pKey ); - pszKey = ( UNSIGNED8* ) &dValue; + pszKey = ( UNSIGNED8 * ) &dValue; u16KeyLen = ( UNSIGNED16 ) sizeof( double ); u16KeyType = ADS_DOUBLEKEY; } @@ -1007,13 +1007,13 @@ static HB_ERRCODE adsSeek( ADSAREAP pArea, BOOL bSoftSeek, PHB_ITEM pKey, BOOL b else if( HB_IS_NUMERIC( pKey ) ) { dValue = hb_itemGetND( pKey ); - pszKey = ( UNSIGNED8* ) &dValue; + pszKey = ( UNSIGNED8 * ) &dValue; u16KeyLen = ( UNSIGNED16 ) sizeof( double ); u16KeyType = ADS_DOUBLEKEY; } else if( HB_IS_LOGICAL( pKey ) ) { - pszKey = ( UNSIGNED8* ) ( hb_itemGetL( pKey ) ? "1" : "0" ); + pszKey = ( UNSIGNED8 * ) ( hb_itemGetL( pKey ) ? "1" : "0" ); u16KeyLen = 1; u16KeyType = ADS_STRINGKEY; } @@ -1022,7 +1022,7 @@ static HB_ERRCODE adsSeek( ADSAREAP pArea, BOOL bSoftSeek, PHB_ITEM pKey, BOOL b commonError( pArea, EG_DATATYPE, 1020, 0, NULL, 0, NULL ); #if defined( ADS_USE_OEM_TRANSLATION ) && ADS_LIB_VERSION < 600 if( pszKeyFree ) - hb_adsOemAnsiFree( pszKeyFree ); + hb_adsOemAnsiFree( ( char * ) pszKeyFree ); #endif return HB_FAILURE; } @@ -1072,7 +1072,7 @@ static HB_ERRCODE adsSeek( ADSAREAP pArea, BOOL bSoftSeek, PHB_ITEM pKey, BOOL b pArea->fBof = FALSE; #if defined( ADS_USE_OEM_TRANSLATION ) && ADS_LIB_VERSION < 600 if( pszKeyFree ) - hb_adsOemAnsiFree( pszKeyFree ); + hb_adsOemAnsiFree( ( char * ) pszKeyFree ); #endif return errCode; } @@ -1148,7 +1148,7 @@ static HB_ERRCODE adsSeek( ADSAREAP pArea, BOOL bSoftSeek, PHB_ITEM pKey, BOOL b hb_xfree( pucSavedKey ); #if defined( ADS_USE_OEM_TRANSLATION ) && ADS_LIB_VERSION < 600 if( pszKeyFree ) - hb_adsOemAnsiFree( pszKeyFree ); + hb_adsOemAnsiFree( ( char * ) pszKeyFree ); #endif return HB_FAILURE; } @@ -1187,7 +1187,7 @@ static HB_ERRCODE adsSeek( ADSAREAP pArea, BOOL bSoftSeek, PHB_ITEM pKey, BOOL b hb_xfree( pucSavedKey ); #if defined( ADS_USE_OEM_TRANSLATION ) && ADS_LIB_VERSION < 600 if( pszKeyFree ) - hb_adsOemAnsiFree( pszKeyFree ); + hb_adsOemAnsiFree( ( char * ) pszKeyFree ); #endif return HB_SUCCESS; diff --git a/harbour/contrib/rddads/adsextrn.ch b/harbour/contrib/rddads/adsextrn.ch new file mode 100644 index 0000000000..1f51e04498 --- /dev/null +++ b/harbour/contrib/rddads/adsextrn.ch @@ -0,0 +1,188 @@ +/* + * $Id$ + */ + +/* + * Harbour Project source code: + * ADS functions + * + * Copyright 2009 Viktor Szakats + * www - http://www.harbour-project.org + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation; either version 2, or (at your option) + * any later version. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this software; see the file COPYING. If not, write to + * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, + * Boston, MA 02111-1307 USA (or visit the web site http://www.gnu.org/). + * + * As a special exception, the Harbour Project gives permission for + * additional uses of the text contained in its release of Harbour. + * + * The exception is that, if you link the Harbour libraries with other + * files to produce an executable, this does not by itself cause the + * resulting executable to be covered by the GNU General Public License. + * Your use of that executable is in no way restricted on account of + * linking the Harbour library code into it. + * + * This exception does not however invalidate any other reasons why + * the executable file might be covered by the GNU General Public License. + * + * This exception applies only to the code released by the Harbour + * Project under the name Harbour. If you copy code from other + * Harbour Project or Free Software Foundation releases into a copy of + * Harbour, as the General Public License permits, the exception does + * not apply to the code that you add in this way. To avoid misleading + * anyone as to the status of such modified files, you must delete + * this exception notice from them. + * + * If you write modifications of your own for Harbour, it is your choice + * whether to permit this exception to apply to your modifications. + * If you do not wish that, delete this exception notice. + * + */ + +#ifndef _ADSEXTERN_CH_ +#define _ADSEXTERN_CH_ + +EXTERNAL ADSGETRELKEYPOS +EXTERNAL ADSSETRELKEYPOS +EXTERNAL ADSCUSTOMIZEAOF +EXTERNAL ADSTESTRECLOCKS +EXTERNAL ADSSETFILETYPE +EXTERNAL ADSSETSERVERTYPE +EXTERNAL ADSSETDATEFORMAT +EXTERNAL ADSSETEPOCH +EXTERNAL ADSAPPLICATIONEXIT +EXTERNAL ADSISSERVERLOADED +EXTERNAL ADSGETCONNECTIONTYPE +EXTERNAL ADSUNLOCKRECORD +EXTERNAL ADSGETTABLECONTYPE +EXTERNAL ADSGETSERVERTIME +EXTERNAL ADSISTABLELOCKED +EXTERNAL ADSISRECORDLOCKED +EXTERNAL ADSLOCKING +EXTERNAL ADSRIGHTSCHECK +EXTERNAL ADSSETCHARTYPE +EXTERNAL ADSGETTABLECHARTYPE +EXTERNAL ADSSETDEFAULT +EXTERNAL ADSSETSEARCHPATH +EXTERNAL ADSSETDELETED +EXTERNAL ADSSETEXACT +EXTERNAL ADSBLOB2FILE +EXTERNAL ADSFILE2BLOB +EXTERNAL ADSKEYNO +EXTERNAL ADSKEYCOUNT +EXTERNAL ADSADDCUSTOMKEY +EXTERNAL ADSDELETECUSTOMKEY +EXTERNAL ADSCLEARAOF +EXTERNAL ADSEVALAOF +EXTERNAL ADSGETTABLEALIAS +EXTERNAL ADSGETAOF +EXTERNAL ADSGETAOFOPTLEVEL +EXTERNAL ADSGETAOFNOOPT +EXTERNAL ADSISRECORDINAOF +EXTERNAL ADSISRECORDVALID +EXTERNAL ADSREFRESHAOF +EXTERNAL ADSSETAOF +EXTERNAL ADSGETFILTER +EXTERNAL ADSENABLEENCRYPTION +EXTERNAL ADSDISABLEENCRYPTION +EXTERNAL ADSENCRYPTTABLE +EXTERNAL ADSDECRYPTTABLE +EXTERNAL ADSENCRYPTRECORD +EXTERNAL ADSDECRYPTRECORD +EXTERNAL ADSISENCRYPTIONENABLED +EXTERNAL ADSISRECORDENCRYPTED +EXTERNAL ADSISTABLEENCRYPTED +EXTERNAL ADSCONNECT +EXTERNAL ADSDISCONNECT +EXTERNAL ADSSTMTSETTABLELOCKTYPE +EXTERNAL ADSCREATESQLSTATEMENT +EXTERNAL ADSEXECUTESQLDIRECT +EXTERNAL ADSPREPARESQL +EXTERNAL ADSEXECUTESQL +EXTERNAL ADSCLOSEALLTABLES +EXTERNAL ADSWRITEALLRECORDS +EXTERNAL ADSREFRESHRECORD +EXTERNAL ADSCOPYTABLE +EXTERNAL ADSCONVERTTABLE +EXTERNAL ADSREGCALLBACK +EXTERNAL ADSCLRCALLBACK +EXTERNAL ADSISINDEXED +EXTERNAL ADSISEXPRVALID +EXTERNAL ADSGETNUMINDEXES +EXTERNAL ADSCONNECTION +EXTERNAL ADSGETHANDLETYPE +EXTERNAL ADSGETLASTERROR +EXTERNAL ADSGETNUMOPENTABLES +EXTERNAL ADSSHOWERROR +EXTERNAL ADSBEGINTRANSACTION +EXTERNAL ADSCOMMITTRANSACTION +EXTERNAL ADSFAILEDTRANSACTIONRECOVERY +EXTERNAL ADSINTRANSACTION +EXTERNAL ADSROLLBACK +EXTERNAL ADSCACHERECORDS +EXTERNAL ADSREINDEX +EXTERNAL ADSVERSION +EXTERNAL ADSCACHEOPENTABLES +EXTERNAL ADSCACHEOPENCURSORS +EXTERNAL ADSISEMPTY +EXTERNAL ADSDDADDTABLE +EXTERNAL ADSDDREMOVETABLE +EXTERNAL ADSDDREMOVEINDEXFILE +EXTERNAL ADSDDADDUSERTOGROUP +EXTERNAL ADSDDREMOVEUSERFROMGROUP +EXTERNAL ADSCONNECT60 +EXTERNAL ADSDDCREATE +EXTERNAL ADSDDCREATEUSER +EXTERNAL ADSDDDELETEUSER +EXTERNAL ADSDDGETDATABASEPROPERTY +EXTERNAL ADSDDSETDATABASEPROPERTY +EXTERNAL ADSDDGETUSERPROPERTY +EXTERNAL ADSTESTLOGIN +EXTERNAL ADSRESTRUCTURETABLE +EXTERNAL ADSCOPYTABLECONTENTS +EXTERNAL ADSDIRECTORY +EXTERNAL ADSCHECKEXISTENCE +EXTERNAL ADSDELETEFILE +EXTERNAL ADSSTMTSETTABLEPASSWORD +EXTERNAL ADSGETSERVERNAME +EXTERNAL ADSVERIFYSQL +EXTERNAL ADSGETNUMACTIVELINKS +EXTERNAL ADSCLOSECACHEDTABLES +EXTERNAL ADSCREATEFTSINDEX +EXTERNAL ADSCREATESAVEPOINT +EXTERNAL ADSROLLBACKSAVEPOINT +EXTERNAL ADSDDCREATELINK +EXTERNAL ADSDDMODIFYLINK +EXTERNAL ADSDDDROPLINK + +EXTERNAL ADSMGCONNECT +EXTERNAL ADSMGDISCONNECT +EXTERNAL ADSMGGETHANDLE +EXTERNAL ADSMGSETHANDLE +EXTERNAL ADSMGKILLUSER +EXTERNAL ADSMGGETSERVERTYPE +EXTERNAL ADSMGGETINSTALLINFO +EXTERNAL ADSMGGETACTIVITYINFO +EXTERNAL ADSMGGETCOMMSTATS +EXTERNAL ADSMGRESETCOMMSTATS +EXTERNAL ADSMGGETCONFIGINFO +EXTERNAL ADSMGGETUSERNAMES +EXTERNAL ADSMGGETLOCKOWNER +EXTERNAL ADSMGGETOPENTABLES +EXTERNAL ADSMGGETOPENTABLES2 +EXTERNAL ADSMGGETOPENINDEXES +EXTERNAL ADSMGGETLOCKS +EXTERNAL ADSMGGETWORKERTHREADACTIVITY + +#endif diff --git a/harbour/contrib/rddads/adsfunc.c b/harbour/contrib/rddads/adsfunc.c index 89ed28512a..c4006928cc 100644 --- a/harbour/contrib/rddads/adsfunc.c +++ b/harbour/contrib/rddads/adsfunc.c @@ -1317,10 +1317,9 @@ HB_FUNC( ADSEXECUTESQL ) hb_retl( FALSE ); } -#if ADS_LIB_VERSION >= 620 - HB_FUNC( ADSVERIFYSQL ) { +#if ADS_LIB_VERSION >= 620 ADSAREAP pArea = hb_adsGetWorkAreaPointer(); if( pArea && pArea->hStatement && ISCHAR( 1 ) ) @@ -1333,10 +1332,11 @@ HB_FUNC( ADSVERIFYSQL ) } else hb_errRT_DBCMD( EG_NOTABLE, 2001, NULL, HB_ERR_FUNCNAME ); +#else + hb_retl( FALSE ); +#endif } -#endif /* ADS_LIB_VERSION >= 620 */ - HB_FUNC( ADSCLOSEALLTABLES ) { hb_retnl( AdsCloseAllTables() ); @@ -1661,27 +1661,23 @@ HB_FUNC( ADSISEMPTY ) hb_errRT_DBCMD( EG_ARG, 1014, NULL, HB_ERR_FUNCNAME ); } -/* Please add all-version functions above this block */ - -#if ADS_LIB_VERSION >= 620 - HB_FUNC( ADSGETNUMACTIVELINKS ) /* Only valid for a DataDict */ { UNSIGNED16 pusNumLinks = 0; +#if ADS_LIB_VERSION >= 620 ADSHANDLE hConnect = HB_ADS_PARCONNECTION( 1 ); if( hConnect ) AdsGetNumActiveLinks( hConnect, &pusNumLinks ); - +#endif hb_retni( pusNumLinks ); } -#endif - -#if ADS_LIB_VERSION >= 600 +/* Please add all-version functions above this block */ HB_FUNC( ADSDDADDTABLE ) { +#if ADS_LIB_VERSION >= 600 hb_retl( AdsDDAddTable( HB_ADS_PARCONNECTION( 4 ) /* hConnect */, ( UNSIGNED8 * ) hb_parcx( 1 ) /* pTableName */, ( UNSIGNED8 * ) hb_parcx( 2 ) /* pTableFileName */, @@ -1689,39 +1685,59 @@ HB_FUNC( ADSDDADDTABLE ) ( UNSIGNED16 ) hb_ads_iCharType, ( UNSIGNED8 * ) hb_parcx( 3 ) /* pTableIndexFileName */, NULL ) == AE_SUCCESS ); +#else + hb_retl( FALSE ); +#endif } HB_FUNC( ADSDDREMOVETABLE ) { +#if ADS_LIB_VERSION >= 600 hb_retl( AdsDDRemoveTable( HB_ADS_PARCONNECTION( 4 ) /* hConnect */, ( UNSIGNED8 * ) hb_parcx( 1 ) /* pTableName */, ( UNSIGNED16 ) ( ISNUM( 2 ) ? hb_parni( 2 ) : ( ISLOG( 2 ) ? hb_parl( 2 ) : 0 ) ) /* usDeleteFiles */ ) == AE_SUCCESS ); +#else + hb_retl( FALSE ); +#endif } HB_FUNC( ADSDDREMOVEINDEXFILE ) { +#if ADS_LIB_VERSION >= 600 hb_retl( AdsDDRemoveIndexFile( HB_ADS_PARCONNECTION( 4 ) /* hConnect */, ( UNSIGNED8 * ) hb_parcx( 1 ) /* pTableName */, ( UNSIGNED8 * ) hb_parcx( 2 ) /* pIndexName */, ( UNSIGNED16 ) ( ISNUM( 3 ) ? hb_parni( 3 ) : ( ISLOG( 3 ) ? hb_parl( 3 ) : 0 ) ) /* usDeleteFiles */ ) == AE_SUCCESS ); +#else + hb_retl( FALSE ); +#endif } HB_FUNC( ADSDDADDUSERTOGROUP ) { +#if ADS_LIB_VERSION >= 600 hb_retl( AdsDDAddUserToGroup( HB_ADS_PARCONNECTION( 3 ) /* hConnect */, ( UNSIGNED8 * ) hb_parcx( 1 ) /* pGroup */, ( UNSIGNED8 * ) hb_parcx( 2 ) /* pName */ ) == AE_SUCCESS ); +#else + hb_retl( FALSE ); +#endif } HB_FUNC( ADSDDREMOVEUSERFROMGROUP ) { +#if ADS_LIB_VERSION >= 600 hb_retl( AdsDDRemoveUserFromGroup( HB_ADS_PARCONNECTION( 3 ) /* hConnect */, ( UNSIGNED8 * ) hb_parcx( 1 ) /* pGroup */, ( UNSIGNED8 * ) hb_parcx( 2 ) /* pName */ ) == AE_SUCCESS ); +#else + hb_retl( FALSE ); +#endif } HB_FUNC( ADSCONNECT60 ) { +#if ADS_LIB_VERSION >= 600 ADSHANDLE hConnect = 0; if( AdsConnect60( ( UNSIGNED8 * ) hb_parcx( 1 ) /* pucServerPath */, @@ -1739,10 +1755,14 @@ HB_FUNC( ADSCONNECT60 ) } else hb_retl( FALSE ); +#else + hb_retl( FALSE ); +#endif } HB_FUNC( ADSDDCREATE ) { +#if ADS_LIB_VERSION >= 600 ADSHANDLE hConnect = 0; if( AdsDDCreate( ( UNSIGNED8 * ) hb_parcx( 1 ) /* pucDictionaryPath */, @@ -1755,25 +1775,37 @@ HB_FUNC( ADSDDCREATE ) } else hb_retl( FALSE ); +#else + hb_retl( FALSE ); +#endif } HB_FUNC( ADSDDCREATEUSER ) { +#if ADS_LIB_VERSION >= 600 hb_retl( AdsDDCreateUser( HB_ADS_PARCONNECTION( 5 ) /* hConnect */, ( UNSIGNED8 * ) hb_parc( 1 ) /* pucGroupName */, ( UNSIGNED8 * ) hb_parc( 2 ) /* pucUserName */, ( UNSIGNED8 * ) hb_parc( 3 ) /* pucPassword */, ( UNSIGNED8 * ) hb_parc( 4 ) /* pucDescription */ ) == AE_SUCCESS ); +#else + hb_retl( FALSE ); +#endif } HB_FUNC( ADSDDDELETEUSER ) { +#if ADS_LIB_VERSION >= 600 hb_retl( AdsDDDeleteUser( HB_ADS_PARCONNECTION( 2 ) /* hConnect */, ( UNSIGNED8 * ) hb_parc( 1 ) /* pucUserName */ ) == AE_SUCCESS ); +#else + hb_retl( FALSE ); +#endif } HB_FUNC( ADSDDGETDATABASEPROPERTY ) { +#if ADS_LIB_VERSION >= 600 UNSIGNED16 ulProperty = ( UNSIGNED16 ) hb_parni( 1 ); ADSHANDLE hConnect = HB_ADS_PARCONNECTION( 2 ); @@ -1965,9 +1997,11 @@ HB_FUNC( ADSDDGETUSERPROPERTY ) } else hb_errRT_DBCMD( EG_ARG, 1014, NULL, HB_ERR_FUNCNAME ); +#else + hb_retl( FALSE ); +#endif } - /* Verify if a username/password combination is valid for this database Call : ADSTESTLOGIN( cServerPath, nServerTypes, cUserName, cPassword, options, @@ -1983,6 +2017,7 @@ HB_FUNC( ADSDDGETUSERPROPERTY ) */ HB_FUNC( ADSTESTLOGIN ) { +#if ADS_LIB_VERSION >= 600 UNSIGNED8 * pucUserName = ( UNSIGNED8 * ) hb_parc( 3 ); ADSHANDLE adsTestHandle = 0; @@ -2011,10 +2046,14 @@ HB_FUNC( ADSTESTLOGIN ) } else hb_retl( FALSE ); +#else + hb_retl( FALSE ); +#endif } HB_FUNC( ADSRESTRUCTURETABLE ) { +#if ADS_LIB_VERSION >= 600 hb_retl( AdsRestructureTable( HB_ADS_PARCONNECTION( 5 ) /* hConnect */, ( UNSIGNED8 * ) hb_parcx( 1 ) /* pTableName */, NULL /* pucAlias */, @@ -2025,10 +2064,14 @@ HB_FUNC( ADSRESTRUCTURETABLE ) ( UNSIGNED8 * ) hb_parcx( 2 ) /* pucAddFields */, ( UNSIGNED8 * ) hb_parcx( 3 ) /* pucDeleteFields */, ( UNSIGNED8 * ) hb_parcx( 4 ) /* pucChangeFields */ ) == AE_SUCCESS ); +#else + hb_retl( FALSE ); +#endif } HB_FUNC( ADSCOPYTABLECONTENTS ) { +#if ADS_LIB_VERSION >= 600 ADSAREAP pArea = hb_adsGetWorkAreaPointer(); /* Source */ if( pArea ) @@ -2053,10 +2096,14 @@ HB_FUNC( ADSCOPYTABLECONTENTS ) } else hb_errRT_DBCMD( EG_NOTABLE, 2001, NULL, HB_ERR_FUNCNAME ); +#else + hb_retl( FALSE ); +#endif } HB_FUNC( ADSDIRECTORY ) { +#if ADS_LIB_VERSION >= 600 UNSIGNED32 ulRetVal; UNSIGNED8 ucFileName[ ADS_MAX_TABLE_NAME ]; UNSIGNED16 usFileNameLen = ADS_MAX_TABLE_NAME; @@ -2097,25 +2144,37 @@ HB_FUNC( ADSDIRECTORY ) } hb_itemReturnRelease( pitmDir ); +#else + hb_reta( 0 ); +#endif } HB_FUNC( ADSCHECKEXISTENCE ) { +#if ADS_LIB_VERSION >= 600 UNSIGNED16 usExist = 0; hb_retl( AdsCheckExistence( HB_ADS_PARCONNECTION( 2 ) /* hConnect */, ( UNSIGNED8 * ) hb_parcx( 1 ) /* pucFilename */, &usExist ) == AE_SUCCESS && usExist != 0 ); +#else + hb_retl( FALSE ); +#endif } HB_FUNC( ADSDELETEFILE ) { +#if ADS_LIB_VERSION >= 600 hb_retl( AdsDeleteFile( HB_ADS_PARCONNECTION( 2 ) /* hConnect */, ( UNSIGNED8 * ) hb_parcx( 1 ) /* pucFilename */ ) == AE_SUCCESS ); +#else + hb_retl( FALSE ); +#endif } HB_FUNC( ADSSTMTSETTABLEPASSWORD ) { +#if ADS_LIB_VERSION >= 600 char * pucTableName = hb_parcx( 1 ); char * pucPassword = hb_parcx( 2 ); @@ -2133,27 +2192,28 @@ HB_FUNC( ADSSTMTSETTABLEPASSWORD ) } else hb_errRT_DBCMD( EG_ARG, 1014, NULL, HB_ERR_FUNCNAME ); +#else + hb_retnl( 0 ); +#endif } HB_FUNC( ADSGETSERVERNAME ) { +#if ADS_LIB_VERSION >= 600 UNSIGNED8 buf[ 256 ]; - UNSIGNED16 usLen = 256; + UNSIGNED16 usLen = sizeof( buf ); if( AdsGetServerName( HB_ADS_PARCONNECTION( 1 ) /* hConnect */, buf, &usLen ) == AE_SUCCESS ) hb_retclen( ( char * ) buf, usLen ); - +#endif /* QUESTION: Design decision or mistake to return NIL on error? [vszakats] */ } -#endif /* ADS_LIB_VERSION >= 600 */ - -#if ADS_LIB_VERSION >= 700 - HB_FUNC( ADSCLOSECACHEDTABLES ) { +#if ADS_LIB_VERSION >= 700 ADSHANDLE hConnect = HB_ADS_PARCONNECTION( 1 ); if( hConnect ) @@ -2163,10 +2223,14 @@ HB_FUNC( ADSCLOSECACHEDTABLES ) } else hb_retl( FALSE ); +#else + hb_retl( FALSE ); +#endif } HB_FUNC( ADSCREATEFTSINDEX ) { +#if ADS_LIB_VERSION >= 700 ADSAREAP pArea = hb_adsGetWorkAreaPointer(); if( pArea ) @@ -2190,55 +2254,68 @@ HB_FUNC( ADSCREATEFTSINDEX ) ( UNSIGNED32 ) ISNUM( 17 ) ? hb_parnl( 17 ) : ADS_DEFAULT /* ulOptions */ ) ); else hb_errRT_DBCMD( EG_NOTABLE, 2001, NULL, HB_ERR_FUNCNAME ); +#else + hb_retnl( 0 ); +#endif } -#endif /* ADS_LIB_VERSION >= 700 */ - -#if ADS_LIB_VERSION >= 800 - HB_FUNC( ADSCREATESAVEPOINT ) { +#if ADS_LIB_VERSION >= 800 hb_retnl( AdsCreateSavepoint( HB_ADS_PARCONNECTION( 1 ) /* hConnect */, ( UNSIGNED8 * ) hb_parc( 2 ) /* pucSavepoint */, ADS_DEFAULT /* ulOptions */ ) ); +#else + hb_retnl( 0 ); +#endif } HB_FUNC( ADSROLLBACKSAVEPOINT ) { +#if ADS_LIB_VERSION >= 800 hb_retnl( AdsRollbackTransaction80( HB_ADS_PARCONNECTION( 1 ) /* hConnect */, ( UNSIGNED8 * ) hb_parc( 2 ) /* pucSavepoint */, ADS_DEFAULT /* ulOptions */ ) ); +#else + hb_retnl( 0 ); +#endif } -#endif /* ADS_LIB_VERSION >= 800 */ - -#if ADS_LIB_VERSION >= 900 - HB_FUNC( ADSDDCREATELINK ) { +#if ADS_LIB_VERSION >= 900 hb_retl( AdsDDCreateLink( HB_ADS_PARCONNECTION( 1 ) /* hConnect */, ( UNSIGNED8 * ) hb_parcx( 2 ) /* pucLinkAlias */, ( UNSIGNED8 * ) hb_parcx( 3 ) /* pucServerPath */, ( UNSIGNED8 * ) hb_parc( 4 ) /* pucUserName */, ( UNSIGNED8 * ) hb_parc( 5 ) /* pucPassword */, ( UNSIGNED32 ) ( ISNUM( 6 ) ? hb_parnl( 6 ) : ADS_DEFAULT ) /* ulOptions */ ) == AE_SUCCESS ); +#else + hb_retl( FALSE ); +#endif } HB_FUNC( ADSDDMODIFYLINK ) { +#if ADS_LIB_VERSION >= 900 hb_retl( AdsDDModifyLink( HB_ADS_PARCONNECTION( 1 ) /* hConnect */, ( UNSIGNED8 * ) hb_parcx( 2 ) /* pucLinkAlias */, ( UNSIGNED8 * ) hb_parcx( 3 ) /* pucServerPath */, ( UNSIGNED8 * ) hb_parc( 4 ) /* pucUserName */, ( UNSIGNED8 * ) hb_parc( 5 ) /* pucPassword */, ( UNSIGNED32 ) ( ISNUM( 6 ) ? hb_parnl( 6 ) : ADS_DEFAULT ) /* ulOptions */ ) == AE_SUCCESS ); +#else + hb_retl( FALSE ); +#endif } HB_FUNC( ADSDDDROPLINK ) { +#if ADS_LIB_VERSION >= 900 hb_retl( AdsDDDropLink( HB_ADS_PARCONNECTION( 1 ) /* hConnect */, ( UNSIGNED8 * ) hb_parcx( 2 ) /* pucLinkAlias */, ( UNSIGNED16 ) hb_parl( 3 ) /* usDropGlobal */ ) == AE_SUCCESS ); /* NOTE: Defaults to 0/FALSE for non logical parameters. */ +#else + hb_retl( FALSE ); +#endif } - -#endif /* ADS_LIB_VERSION >= 900 */