DOCINFO * hbwapi_par_DOCINFO( DOCINFO * p, int iParam, HB_BOOL bMandatory, void *** ph ) { PHB_ITEM pStru = hb_param( iParam, HB_IT_ANY ); void ** h = ( void ** ) hb_xgrabz( 3 * sizeof( void * ) ); *ph = h; memset( p, 0, sizeof( DOCINFO ) ); p->cbSize = sizeof( DOCINFO ); if( pStru && HB_IS_HASH( pStru ) ) { p->lpszDocName = HB_ITEMGETSTR( hb_hashGetCItemPtr( pStru, "lpszDocName" ), &h[ 0 ], NULL ); p->lpszOutput = HB_ITEMGETSTR( hb_hashGetCItemPtr( pStru, "lpszOutput" ), &h[ 1 ], NULL ); p->lpszDatatype = HB_ITEMGETSTR( hb_hashGetCItemPtr( pStru, "lpszDatatype" ), &h[ 2 ], NULL ); p->fwType = ( DWORD ) hb_itemGetNL( hb_hashGetCItemPtr( pStru, "fwType" ) ); return p; } else if( bMandatory ) return p; hb_xfree( h ); *ph = NULL; return NULL; }
static int hb_gt_gui_Alert( PHB_GT pGT, PHB_ITEM pMessage, PHB_ITEM pOptions, int iClrNorm, int iClrHigh, double dDelay ) { void * hText; LPCTSTR lpText = HB_ITEMGETSTR( pMessage, &hText, NULL ); int iRet, iOptions = pOptions ? ( int ) hb_arrayLen( pOptions ) : 0; if( lpText && iOptions > 0 ) { int i, iType = 0; UINT uType; for( i = 1; i <= iOptions; ++i ) iType |= hb_gt_gui_optionId( hb_arrayGetCPtr( pOptions, i ) ); switch( iType ) { case 0x01: uType = MB_OK; break; case 0x03: uType = MB_OKCANCEL; break; case 0x06: uType = MB_RETRYCANCEL; break; case 0x0E: #ifdef MB_CANCELTRYCONTINUE uType = hb_iswin2k() ? MB_CANCELTRYCONTINUE : MB_ABORTRETRYIGNORE; #else uType = MB_ABORTRETRYIGNORE; #endif break; case 0x12: uType = MB_OKCANCEL; break; case 0x21: uType = MB_YESNO; break; case 0x30: uType = MB_YESNO; break; case 0x32: uType = MB_YESNOCANCEL; break; default: uType = MB_OK; break; } iRet = MessageBox( NULL, lpText, TEXT( "" ), uType ); iRet = hb_gt_gui_optionPos( iRet, iType, pOptions ); } else iRet = HB_GTSUPER_ALERT( pGT, pMessage, pOptions, iClrNorm, iClrHigh, dDelay ); hb_strfree( hText ); return iRet; }
PHB_ITEM hb_libLoad( PHB_ITEM pLibName, PHB_ITEM pArgs ) { void * hDynLib = NULL; if( hb_itemGetCLen( pLibName ) > 0 ) { int argc = pArgs ? ( int ) hb_arrayLen( pArgs ) : 0, i; const char ** argv = NULL; if( argc > 0 ) { argv = ( const char ** ) hb_xgrab( sizeof( char * ) * argc ); for( i = 0; i < argc; ++i ) argv[ i ] = hb_arrayGetCPtr( pArgs, i + 1 ); } if( hb_vmLockModuleSymbols() ) { /* use stack address as first level marker */ hb_vmBeginSymbolGroup( ( void * ) hb_stackId(), HB_TRUE ); #if defined( HB_OS_WIN ) { void * hFileName; hDynLib = ( void * ) LoadLibraryEx( HB_ITEMGETSTR( pLibName, &hFileName, NULL ), NULL, LOAD_WITH_ALTERED_SEARCH_PATH ); hb_strfree( hFileName ); } #elif defined( HB_OS_OS2 ) { HB_UCHAR LoadError[ 256 ] = ""; /* Area for load failure information */ HMODULE hDynModule; if( DosLoadModule( ( PSZ ) LoadError, sizeof( LoadError ), ( PCSZ ) hb_itemGetCPtr( pLibName ), &hDynModule ) == NO_ERROR ) hDynLib = ( void * ) hDynModule; } #elif defined( HB_HAS_DLFCN ) hDynLib = ( void * ) dlopen( hb_itemGetCPtr( pLibName ), RTLD_LAZY | RTLD_GLOBAL ); if( ! hDynLib ) { HB_TRACE( HB_TR_DEBUG, ( "hb_libLoad(): dlopen(): %s", dlerror() ) ); } #elif defined( HB_CAUSEWAY_DLL ) hDynLib = LoadLibrary( hb_itemGetCPtr( pLibName ) ); #else { int iTODO; } #endif /* set real marker */ hb_vmInitSymbolGroup( hDynLib, argc, argv ); hb_vmUnlockModuleSymbols(); } if( argv ) hb_xfree( ( void * ) argv ); } if( hDynLib ) { void ** pLibPtr = ( void ** ) hb_gcAllocate( sizeof( void * ), &s_gcDynlibFuncs ); *pLibPtr = hDynLib; return hb_itemPutPtrGC( NULL, pLibPtr ); } return NULL; }
LOGFONT * hbwapi_par_LOGFONT( LOGFONT * p, int iParam, HB_BOOL bMandatory ) { PHB_ITEM pStru = hb_param( iParam, HB_IT_ANY ); void * hfFaceName; LPCTSTR pfFaceName; HB_SIZE nLen; memset( p, 0, sizeof( LOGFONT ) ); if( pStru && HB_IS_HASH( pStru ) ) { p->lfHeight = ( LONG ) hb_itemGetNL( hb_hashGetCItemPtr( pStru, "lfHeight" ) ); p->lfWidth = ( LONG ) hb_itemGetNL( hb_hashGetCItemPtr( pStru, "lfWidth" ) ); p->lfEscapement = ( LONG ) hb_itemGetNL( hb_hashGetCItemPtr( pStru, "lfEscapement" ) ); p->lfOrientation = ( LONG ) hb_itemGetNL( hb_hashGetCItemPtr( pStru, "lfOrientation" ) ); p->lfWeight = ( LONG ) hb_itemGetNL( hb_hashGetCItemPtr( pStru, "lfWeight" ) ); p->lfItalic = ( BYTE ) hb_itemGetNI( hb_hashGetCItemPtr( pStru, "lfItalic" ) ); p->lfUnderline = ( BYTE ) hb_itemGetNI( hb_hashGetCItemPtr( pStru, "lfUnderline" ) ); p->lfStrikeOut = ( BYTE ) hb_itemGetNI( hb_hashGetCItemPtr( pStru, "lfStrikeOut" ) ); p->lfCharSet = ( BYTE ) hb_itemGetNI( hb_hashGetCItemPtr( pStru, "lfCharSet" ) ); p->lfOutPrecision = ( BYTE ) hb_itemGetNI( hb_hashGetCItemPtr( pStru, "lfOutPrecision" ) ); p->lfClipPrecision = ( BYTE ) hb_itemGetNI( hb_hashGetCItemPtr( pStru, "lfClipPrecision" ) ); p->lfQuality = ( BYTE ) hb_itemGetNI( hb_hashGetCItemPtr( pStru, "lfQuality" ) ); p->lfPitchAndFamily = ( BYTE ) hb_itemGetNI( hb_hashGetCItemPtr( pStru, "lfPitchAndFamily" ) ); pfFaceName = HB_ITEMGETSTR( hb_hashGetCItemPtr( pStru, "lfFaceName" ), &hfFaceName, &nLen ); if( nLen > ( LF_FACESIZE - 1 ) ) nLen = LF_FACESIZE - 1; memcpy( p->lfFaceName, pfFaceName, nLen * sizeof( TCHAR ) ); p->lfFaceName[ nLen ] = TEXT( '\0' ); hb_strfree( hfFaceName ); return p; } else if( pStru && HB_IS_ARRAY( pStru ) && hb_arrayLen( pStru ) >= 14 ) { p->lfHeight = ( LONG ) hb_arrayGetNL( pStru, 1 ); p->lfWidth = ( LONG ) hb_arrayGetNL( pStru, 2 ); p->lfEscapement = ( LONG ) hb_arrayGetNL( pStru, 3 ); p->lfOrientation = ( LONG ) hb_arrayGetNL( pStru, 4 ); p->lfWeight = ( LONG ) hb_arrayGetNL( pStru, 5 ); p->lfItalic = ( BYTE ) hb_arrayGetNI( pStru, 6 ); p->lfUnderline = ( BYTE ) hb_arrayGetNI( pStru, 7 ); p->lfStrikeOut = ( BYTE ) hb_arrayGetNI( pStru, 8 ); p->lfCharSet = ( BYTE ) hb_arrayGetNI( pStru, 9 ); p->lfOutPrecision = ( BYTE ) hb_arrayGetNI( pStru, 10 ); p->lfClipPrecision = ( BYTE ) hb_arrayGetNI( pStru, 11 ); p->lfQuality = ( BYTE ) hb_arrayGetNI( pStru, 12 ); p->lfPitchAndFamily = ( BYTE ) hb_arrayGetNI( pStru, 13 ); pfFaceName = HB_ARRAYGETSTR( pStru, 14, &hfFaceName, &nLen ); if( nLen > ( LF_FACESIZE - 1 ) ) nLen = LF_FACESIZE - 1; memcpy( p->lfFaceName, pfFaceName, nLen * sizeof( TCHAR ) ); p->lfFaceName[ nLen ] = TEXT( '\0' ); hb_strfree( hfFaceName ); return p; } else if( bMandatory ) return p; return NULL; }