2008-06-16 13:56 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
* contrib/hbole/ole2.c
* Further cleanup.
This commit is contained in:
@@ -8,6 +8,10 @@
|
||||
2008-12-31 13:59 UTC+0100 Foo Bar <foo.bar@foobar.org>
|
||||
*/
|
||||
|
||||
2008-06-16 13:56 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
|
||||
* contrib/hbole/ole2.c
|
||||
* Further cleanup.
|
||||
|
||||
2008-06-16 11:04 UTC+0200 Viktor Szakats (harbour.01 syenar hu)
|
||||
* include/set.ch
|
||||
! Fix to previous commit.
|
||||
|
||||
@@ -99,7 +99,7 @@
|
||||
static VARIANTARG s_RetVal;
|
||||
static EXCEPINFO s_excep;
|
||||
static HRESULT s_nOleError = 0;
|
||||
static int s_lInitialized = 0;
|
||||
static int s_bInitialized = FALSE;
|
||||
|
||||
static double DateToDbl( LPSTR cDate )
|
||||
{
|
||||
@@ -138,12 +138,10 @@ static LPSTR WideToAnsi( LPSTR cWide )
|
||||
return cString;
|
||||
}
|
||||
|
||||
static void GetParams(DISPPARAMS * dParams)
|
||||
static void GetParams( DISPPARAMS * dParams )
|
||||
{
|
||||
VARIANTARG * pArgs = NULL;
|
||||
PHB_ITEM uParam;
|
||||
int n, nArgs, nArg;
|
||||
LPSTR cString;
|
||||
|
||||
nArgs = hb_pcount() - 2;
|
||||
|
||||
@@ -153,6 +151,8 @@ static void GetParams(DISPPARAMS * dParams)
|
||||
|
||||
for( n = 0; n < nArgs; n++ )
|
||||
{
|
||||
PHB_ITEM uParam;
|
||||
|
||||
// Los parametros en VARIANTARG[] hay que ponerlos en orden inverso
|
||||
nArg = nArgs + 2 - n;
|
||||
|
||||
@@ -164,96 +164,99 @@ static void GetParams(DISPPARAMS * dParams)
|
||||
{
|
||||
case '\0':
|
||||
#if !defined(__BORLANDC__) && !defined(__XCC__) && !defined(NONAMELESSUNION)
|
||||
pArgs[ n ].vt = VT_EMPTY;
|
||||
pArgs[ n ].vt = VT_EMPTY;
|
||||
#else
|
||||
pArgs[ n ].n1.n2.vt = VT_EMPTY;
|
||||
pArgs[ n ].n1.n2.vt = VT_EMPTY;
|
||||
#endif
|
||||
break;
|
||||
break;
|
||||
|
||||
case HB_IT_STRING:
|
||||
case HB_IT_MEMO:
|
||||
#if !defined(__BORLANDC__) && !defined(__XCC__) && !defined(NONAMELESSUNION)
|
||||
pArgs[ n ].vt = VT_BSTR;
|
||||
#else
|
||||
pArgs[ n ].n1.n2.vt = VT_BSTR;
|
||||
#endif
|
||||
cString = AnsiToWide( hb_parc( nArg ) );
|
||||
#if !defined(__BORLANDC__) && !defined(__XCC__) && !defined(NONAMELESSUNION)
|
||||
pArgs[ n ].bstrVal = SysAllocString( (OLECHAR *) cString );
|
||||
#else
|
||||
pArgs[ n ].n1.n2.n3.bstrVal = SysAllocString( (OLECHAR *) cString );
|
||||
#endif
|
||||
hb_xfree( cString );
|
||||
break;
|
||||
{
|
||||
LPSTR cString;
|
||||
|
||||
#if !defined(__BORLANDC__) && !defined(__XCC__) && !defined(NONAMELESSUNION)
|
||||
pArgs[ n ].vt = VT_BSTR;
|
||||
#else
|
||||
pArgs[ n ].n1.n2.vt = VT_BSTR;
|
||||
#endif
|
||||
cString = AnsiToWide( hb_parc( nArg ) );
|
||||
#if !defined(__BORLANDC__) && !defined(__XCC__) && !defined(NONAMELESSUNION)
|
||||
pArgs[ n ].bstrVal = SysAllocString( (OLECHAR *) cString );
|
||||
#else
|
||||
pArgs[ n ].n1.n2.n3.bstrVal = SysAllocString( (OLECHAR *) cString );
|
||||
#endif
|
||||
hb_xfree( cString );
|
||||
break;
|
||||
}
|
||||
case HB_IT_LOGICAL:
|
||||
#if !defined(__BORLANDC__) && !defined(__XCC__) && !defined(NONAMELESSUNION)
|
||||
pArgs[ n ].vt = VT_BOOL;
|
||||
pArgs[ n ].boolVal = hb_parl( nArg );
|
||||
pArgs[ n ].vt = VT_BOOL;
|
||||
pArgs[ n ].boolVal = hb_parl( nArg );
|
||||
#else
|
||||
pArgs[ n ].n1.n2.vt = VT_BOOL;
|
||||
pArgs[ n ].n1.n2.n3.boolVal = hb_parl( nArg );
|
||||
pArgs[ n ].n1.n2.vt = VT_BOOL;
|
||||
pArgs[ n ].n1.n2.n3.boolVal = hb_parl( nArg );
|
||||
#endif
|
||||
break;
|
||||
break;
|
||||
|
||||
case HB_IT_INTEGER:
|
||||
case HB_IT_LONG:
|
||||
case HB_IT_NUMERIC:
|
||||
#if !defined(__BORLANDC__) && !defined(__XCC__) && !defined(NONAMELESSUNION)
|
||||
pArgs[ n ].vt = VT_I4;
|
||||
pArgs[ n ].lVal = hb_parnl( nArg );
|
||||
pArgs[ n ].vt = VT_I4;
|
||||
pArgs[ n ].lVal = hb_parnl( nArg );
|
||||
#else
|
||||
pArgs[ n ].n1.n2.vt = VT_I4;
|
||||
pArgs[ n ].n1.n2.n3.lVal = hb_parnl( nArg );
|
||||
pArgs[ n ].n1.n2.vt = VT_I4;
|
||||
pArgs[ n ].n1.n2.n3.lVal = hb_parnl( nArg );
|
||||
#endif
|
||||
break;
|
||||
break;
|
||||
|
||||
case HB_IT_DOUBLE:
|
||||
#if !defined(__BORLANDC__) && !defined(__XCC__) && !defined(NONAMELESSUNION)
|
||||
pArgs[ n ].vt = VT_R8;
|
||||
pArgs[ n ].dblVal = hb_parnd( nArg );
|
||||
pArgs[ n ].vt = VT_R8;
|
||||
pArgs[ n ].dblVal = hb_parnd( nArg );
|
||||
#else
|
||||
pArgs[ n ].n1.n2.vt = VT_R8;
|
||||
pArgs[ n ].n1.n2.n3.dblVal = hb_parnd( nArg );
|
||||
pArgs[ n ].n1.n2.vt = VT_R8;
|
||||
pArgs[ n ].n1.n2.n3.dblVal = hb_parnd( nArg );
|
||||
#endif
|
||||
break;
|
||||
break;
|
||||
case HB_IT_DATE:
|
||||
#if !defined(__BORLANDC__) && !defined(__XCC__) && !defined(NONAMELESSUNION)
|
||||
pArgs[ n ].vt = VT_DATE;
|
||||
pArgs[ n ].dblVal = DateToDbl( hb_pards( nArg ) );
|
||||
pArgs[ n ].vt = VT_DATE;
|
||||
pArgs[ n ].dblVal = DateToDbl( hb_pards( nArg ) );
|
||||
#else
|
||||
pArgs[ n ].n1.n2.vt = VT_DATE;
|
||||
pArgs[ n ].n1.n2.n3.dblVal = DateToDbl( hb_pards( nArg ) );
|
||||
pArgs[ n ].n1.n2.vt = VT_DATE;
|
||||
pArgs[ n ].n1.n2.n3.dblVal = DateToDbl( hb_pards( nArg ) );
|
||||
#endif
|
||||
break;
|
||||
break;
|
||||
|
||||
case HB_IT_OBJECT:
|
||||
{
|
||||
PHB_DYNS pData;
|
||||
PHB_DYNS pData;
|
||||
#if !defined(__BORLANDC__) && !defined(__XCC__) && !defined(NONAMELESSUNION)
|
||||
pArgs[ n ].vt = VT_EMPTY;
|
||||
pArgs[ n ].vt = VT_EMPTY;
|
||||
#else
|
||||
pArgs[ n ].n1.n2.vt = VT_EMPTY;
|
||||
pArgs[ n ].n1.n2.vt = VT_EMPTY;
|
||||
#endif
|
||||
if( hb_stricmp( hb_objGetClsName( uParam ), "TOleAuto" ) == 0 )
|
||||
{
|
||||
pData = hb_dynsymFindName( "hObj" );
|
||||
if( pData )
|
||||
{
|
||||
hb_vmPushSymbol( hb_dynsymSymbol( pData ) );
|
||||
hb_vmPush( uParam );
|
||||
hb_vmDo( 0 );
|
||||
if( hb_stricmp( hb_objGetClsName( uParam ), "TOleAuto" ) == 0 )
|
||||
{
|
||||
pData = hb_dynsymFindName( "hObj" );
|
||||
if( pData )
|
||||
{
|
||||
hb_vmPushSymbol( hb_dynsymSymbol( pData ) );
|
||||
hb_vmPush( uParam );
|
||||
hb_vmDo( 0 );
|
||||
#if !defined(__BORLANDC__) && !defined(__XCC__) && !defined(NONAMELESSUNION)
|
||||
pArgs[ n ].vt = VT_DISPATCH;
|
||||
pArgs[ n ].pdispVal = ( IDispatch * ) hb_parnl( -1 );
|
||||
pArgs[ n ].vt = VT_DISPATCH;
|
||||
pArgs[ n ].pdispVal = ( IDispatch * ) hb_parptr( -1 );
|
||||
#else
|
||||
pArgs[ n ].n1.n2.vt = VT_DISPATCH;
|
||||
pArgs[ n ].n1.n2.n3.pdispVal = ( IDispatch * ) hb_parnl( -1 );
|
||||
pArgs[ n ].n1.n2.vt = VT_DISPATCH;
|
||||
pArgs[ n ].n1.n2.n3.pdispVal = ( IDispatch * ) hb_parptr( -1 );
|
||||
#endif
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -264,7 +267,7 @@ static void GetParams(DISPPARAMS * dParams)
|
||||
dParams->cNamedArgs = 0;
|
||||
}
|
||||
|
||||
static void FreeParams(DISPPARAMS * dParams)
|
||||
static void FreeParams( DISPPARAMS * dParams )
|
||||
{
|
||||
if( dParams->cArgs > 0 )
|
||||
{
|
||||
@@ -279,45 +282,41 @@ static void FreeParams(DISPPARAMS * dParams)
|
||||
|
||||
static void RetValue( void )
|
||||
{
|
||||
LPSTR cString;
|
||||
char * cDate[ 9 ];
|
||||
|
||||
#if !defined(__BORLANDC__) && !defined(__XCC__) && !defined(NONAMELESSUNION)
|
||||
switch( s_RetVal.vt )
|
||||
{
|
||||
case VT_BSTR:
|
||||
cString = WideToAnsi( ( LPSTR ) s_RetVal.bstrVal );
|
||||
hb_retc_buffer( cString );
|
||||
break;
|
||||
hb_retc_buffer( WideToAnsi( ( LPSTR ) s_RetVal.bstrVal ) );
|
||||
break;
|
||||
|
||||
case VT_BOOL:
|
||||
hb_retl( s_RetVal.boolVal );
|
||||
break;
|
||||
hb_retl( s_RetVal.boolVal );
|
||||
break;
|
||||
|
||||
case VT_DISPATCH:
|
||||
hb_retnl( ( LONG ) s_RetVal.pdispVal );
|
||||
break;
|
||||
hb_retnl( ( LONG ) s_RetVal.pdispVal );
|
||||
break;
|
||||
|
||||
case VT_I4:
|
||||
hb_retnl( ( LONG ) s_RetVal.iVal );
|
||||
break;
|
||||
hb_retnl( ( LONG ) s_RetVal.iVal );
|
||||
break;
|
||||
|
||||
case VT_R8:
|
||||
hb_retnd( s_RetVal.dblVal );
|
||||
break;
|
||||
hb_retnd( s_RetVal.dblVal );
|
||||
break;
|
||||
|
||||
case VT_DATE:
|
||||
hb_retds( DblToDate( s_RetVal.dblVal, cDate ) );
|
||||
break;
|
||||
|
||||
{
|
||||
char cDate[ 9 ];
|
||||
hb_retds( DblToDate( s_RetVal.dblVal, cDate ) );
|
||||
break;
|
||||
}
|
||||
case VT_EMPTY:
|
||||
hb_ret();
|
||||
break;
|
||||
break;
|
||||
|
||||
default:
|
||||
if( s_nOleError == S_OK )
|
||||
s_nOleError = (HRESULT) -1;
|
||||
hb_ret();
|
||||
if( s_nOleError == S_OK )
|
||||
s_nOleError = (HRESULT) -1;
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -327,39 +326,38 @@ static void RetValue( void )
|
||||
switch( s_RetVal.n1.n2.vt )
|
||||
{
|
||||
case VT_BSTR:
|
||||
cString = WideToAnsi( ( LPSTR ) s_RetVal.n1.n2.n3.bstrVal );
|
||||
hb_retc_buffer( cString );
|
||||
break;
|
||||
hb_retc_buffer( WideToAnsi( ( LPSTR ) s_RetVal.n1.n2.n3.bstrVal ) );
|
||||
break;
|
||||
|
||||
case VT_BOOL:
|
||||
hb_retl( s_RetVal.n1.n2.n3.boolVal );
|
||||
break;
|
||||
hb_retl( s_RetVal.n1.n2.n3.boolVal );
|
||||
break;
|
||||
|
||||
case VT_DISPATCH:
|
||||
hb_retnl( ( LONG ) s_RetVal.n1.n2.n3.pdispVal );
|
||||
break;
|
||||
hb_retnl( ( LONG ) s_RetVal.n1.n2.n3.pdispVal );
|
||||
break;
|
||||
|
||||
case VT_I4:
|
||||
hb_retnl( ( LONG ) s_RetVal.n1.n2.n3.iVal );
|
||||
break;
|
||||
hb_retnl( ( LONG ) s_RetVal.n1.n2.n3.iVal );
|
||||
break;
|
||||
|
||||
case VT_R8:
|
||||
hb_retnd( s_RetVal.n1.n2.n3.dblVal );
|
||||
break;
|
||||
hb_retnd( s_RetVal.n1.n2.n3.dblVal );
|
||||
break;
|
||||
|
||||
case VT_DATE:
|
||||
hb_retds( DblToDate( s_RetVal.n1.n2.n3.dblVal, cDate ) );
|
||||
break;
|
||||
|
||||
{
|
||||
char cDate[ 9 ];
|
||||
hb_retds( DblToDate( s_RetVal.n1.n2.n3.dblVal, cDate ) );
|
||||
break;
|
||||
}
|
||||
case VT_EMPTY:
|
||||
hb_ret();
|
||||
break;
|
||||
break;
|
||||
|
||||
default:
|
||||
if( s_nOleError == S_OK )
|
||||
s_nOleError = (HRESULT) -1;
|
||||
hb_ret();
|
||||
break;
|
||||
if( s_nOleError == S_OK )
|
||||
s_nOleError = (HRESULT) -1;
|
||||
break;
|
||||
}
|
||||
|
||||
if( s_RetVal.n1.n2.vt != VT_DISPATCH )
|
||||
@@ -373,18 +371,15 @@ HB_FUNC( CREATEOLEOBJECT ) // ( cOleName | cCLSID [, cIID ] )
|
||||
LPSTR cCLSID;
|
||||
GUID ClassID, iid;
|
||||
LPIID riid = (LPIID) &IID_IDispatch;
|
||||
void *pDisp = NULL; /* IDispatch */
|
||||
/* void *
|
||||
* used intentionally to inform compiler that there is no
|
||||
* strict-aliasing
|
||||
*/
|
||||
void * pDisp = NULL; /* IDispatch */
|
||||
/* 'void *' used intentionally to inform compiler that there is no strict-aliasing */
|
||||
|
||||
s_nOleError = S_OK;
|
||||
|
||||
if( !s_lInitialized )
|
||||
if( !s_bInitialized )
|
||||
{
|
||||
s_nOleError = OleInitialize( NULL );
|
||||
s_lInitialized = 1;
|
||||
s_bInitialized = TRUE;
|
||||
}
|
||||
|
||||
if( (s_nOleError == S_OK) || (s_nOleError == (HRESULT) S_FALSE) )
|
||||
@@ -416,7 +411,7 @@ HB_FUNC( CREATEOLEOBJECT ) // ( cOleName | cCLSID [, cIID ] )
|
||||
(REFIID) riid, &pDisp );
|
||||
}
|
||||
|
||||
hb_retnl( ( LONG ) pDisp );
|
||||
hb_retptr( pDisp );
|
||||
}
|
||||
|
||||
HB_FUNC( OLESHOWEXCEPTION )
|
||||
@@ -437,7 +432,7 @@ HB_FUNC( OLESHOWEXCEPTION )
|
||||
|
||||
HB_FUNC( OLEINVOKE ) // (hOleObject, szMethodName, uParams...)
|
||||
{
|
||||
IDispatch * pDisp = ( IDispatch * ) hb_parnl( 1 );
|
||||
IDispatch * pDisp = ( IDispatch * ) hb_parptr( 1 );
|
||||
LPSTR cMember;
|
||||
DISPID lDispID;
|
||||
DISPPARAMS dParams;
|
||||
@@ -448,7 +443,7 @@ HB_FUNC( OLEINVOKE ) // (hOleObject, szMethodName, uParams...)
|
||||
|
||||
cMember = AnsiToWide( hb_parc( 2 ) );
|
||||
s_nOleError = pDisp->lpVtbl->GetIDsOfNames( pDisp, HB_ID_REF( REFIID, IID_NULL ),
|
||||
( wchar_t ** ) &cMember, 1,
|
||||
( wchar_t * ) cMember, 1,
|
||||
LOCALE_USER_DEFAULT, &lDispID );
|
||||
hb_xfree( cMember );
|
||||
|
||||
@@ -456,14 +451,14 @@ HB_FUNC( OLEINVOKE ) // (hOleObject, szMethodName, uParams...)
|
||||
{
|
||||
GetParams( &dParams );
|
||||
s_nOleError = pDisp->lpVtbl->Invoke( pDisp,
|
||||
lDispID,
|
||||
HB_ID_REF( REFIID, IID_NULL ),
|
||||
LOCALE_USER_DEFAULT,
|
||||
DISPATCH_METHOD,
|
||||
&dParams,
|
||||
&s_RetVal,
|
||||
&s_excep,
|
||||
&uArgErr ) ;
|
||||
lDispID,
|
||||
HB_ID_REF( REFIID, IID_NULL ),
|
||||
LOCALE_USER_DEFAULT,
|
||||
DISPATCH_METHOD,
|
||||
&dParams,
|
||||
&s_RetVal,
|
||||
&s_excep,
|
||||
&uArgErr ) ;
|
||||
FreeParams( &dParams );
|
||||
}
|
||||
|
||||
@@ -472,9 +467,10 @@ HB_FUNC( OLEINVOKE ) // (hOleObject, szMethodName, uParams...)
|
||||
|
||||
HB_FUNC( OLESETPROPERTY ) // (hOleObject, cPropName, uValue, uParams...)
|
||||
{
|
||||
IDispatch * pDisp = ( IDispatch * ) hb_parnl( 1 );
|
||||
IDispatch * pDisp = ( IDispatch * ) hb_parptr( 1 );
|
||||
LPSTR cMember;
|
||||
DISPID lDispID, lPropPut = DISPID_PROPERTYPUT;
|
||||
DISPID lDispID;
|
||||
DISPID lPropPut = DISPID_PROPERTYPUT;
|
||||
DISPPARAMS dParams;
|
||||
UINT uArgErr;
|
||||
|
||||
@@ -483,8 +479,8 @@ HB_FUNC( OLESETPROPERTY ) // (hOleObject, cPropName, uValue, uParams...)
|
||||
|
||||
cMember = AnsiToWide( hb_parc( 2 ) );
|
||||
s_nOleError = pDisp->lpVtbl->GetIDsOfNames( pDisp, HB_ID_REF( REFIID, IID_NULL ),
|
||||
( wchar_t ** ) &cMember, 1,
|
||||
LOCALE_USER_DEFAULT, &lDispID );
|
||||
( wchar_t * ) cMember, 1,
|
||||
LOCALE_USER_DEFAULT, &lDispID );
|
||||
hb_xfree( cMember );
|
||||
|
||||
if( s_nOleError == S_OK )
|
||||
@@ -494,14 +490,14 @@ HB_FUNC( OLESETPROPERTY ) // (hOleObject, cPropName, uValue, uParams...)
|
||||
dParams.cNamedArgs = 1;
|
||||
|
||||
s_nOleError = pDisp->lpVtbl->Invoke( pDisp,
|
||||
lDispID,
|
||||
HB_ID_REF( REFIID, IID_NULL ),
|
||||
LOCALE_USER_DEFAULT,
|
||||
DISPATCH_PROPERTYPUT,
|
||||
&dParams,
|
||||
NULL, // No return value
|
||||
&s_excep,
|
||||
&uArgErr );
|
||||
lDispID,
|
||||
HB_ID_REF( REFIID, IID_NULL ),
|
||||
LOCALE_USER_DEFAULT,
|
||||
DISPATCH_PROPERTYPUT,
|
||||
&dParams,
|
||||
NULL, // No return value
|
||||
&s_excep,
|
||||
&uArgErr );
|
||||
|
||||
FreeParams( &dParams );
|
||||
}
|
||||
@@ -509,7 +505,7 @@ HB_FUNC( OLESETPROPERTY ) // (hOleObject, cPropName, uValue, uParams...)
|
||||
|
||||
HB_FUNC( OLEGETPROPERTY ) // (hOleObject, cPropName, uParams...)
|
||||
{
|
||||
IDispatch * pDisp = ( IDispatch * ) hb_parnl( 1 );
|
||||
IDispatch * pDisp = ( IDispatch * ) hb_parptr( 1 );
|
||||
LPSTR cMember;
|
||||
DISPID lDispID;
|
||||
DISPPARAMS dParams;
|
||||
@@ -520,22 +516,22 @@ HB_FUNC( OLEGETPROPERTY ) // (hOleObject, cPropName, uParams...)
|
||||
|
||||
cMember = AnsiToWide( hb_parc( 2 ) );
|
||||
s_nOleError = pDisp->lpVtbl->GetIDsOfNames( pDisp, HB_ID_REF( REFIID, IID_NULL ),
|
||||
( wchar_t ** ) &cMember, 1,
|
||||
LOCALE_USER_DEFAULT, &lDispID );
|
||||
( wchar_t ** ) &cMember, 1,
|
||||
LOCALE_USER_DEFAULT, &lDispID );
|
||||
hb_xfree( cMember );
|
||||
|
||||
if( s_nOleError == S_OK )
|
||||
{
|
||||
GetParams( &dParams );
|
||||
s_nOleError = pDisp->lpVtbl->Invoke( pDisp,
|
||||
lDispID,
|
||||
HB_ID_REF( REFIID, IID_NULL ),
|
||||
LOCALE_USER_DEFAULT,
|
||||
DISPATCH_PROPERTYGET,
|
||||
&dParams,
|
||||
&s_RetVal,
|
||||
&s_excep,
|
||||
&uArgErr );
|
||||
lDispID,
|
||||
HB_ID_REF( REFIID, IID_NULL ),
|
||||
LOCALE_USER_DEFAULT,
|
||||
DISPATCH_PROPERTYGET,
|
||||
&dParams,
|
||||
&s_RetVal,
|
||||
&s_excep,
|
||||
&uArgErr );
|
||||
|
||||
FreeParams( &dParams );
|
||||
}
|
||||
@@ -545,7 +541,35 @@ HB_FUNC( OLEGETPROPERTY ) // (hOleObject, cPropName, uParams...)
|
||||
|
||||
HB_FUNC( OLEERROR )
|
||||
{
|
||||
hb_retnl( (LONG) s_nOleError );
|
||||
hb_retnl( ( long ) s_nOleError );
|
||||
}
|
||||
|
||||
HB_FUNC( OLE2TXTERROR )
|
||||
{
|
||||
switch( (LONG) s_nOleError)
|
||||
{
|
||||
case S_OK: hb_retc( "S_OK" ); break;
|
||||
case CO_E_CLASSSTRING: hb_retc( "CO_E_CLASSSTRING" ); break;
|
||||
case OLE_E_WRONGCOMPOBJ: hb_retc( "OLE_E_WRONGCOMPOBJ" ); break;
|
||||
case REGDB_E_CLASSNOTREG: hb_retc( "REGDB_E_CLASSNOTREG" ); break;
|
||||
case REGDB_E_WRITEREGDB: hb_retc( "REGDB_E_WRITEREGDB" ); break;
|
||||
case E_OUTOFMEMORY: hb_retc( "E_OUTOFMEMORY" ); break;
|
||||
case E_INVALIDARG: hb_retc( "E_INVALIDARG" ); break;
|
||||
case E_UNEXPECTED: hb_retc( "E_UNEXPECTED" ); break;
|
||||
case DISP_E_UNKNOWNNAME: hb_retc( "DISP_E_UNKNOWNNAME" ); break;
|
||||
case DISP_E_UNKNOWNLCID: hb_retc( "DISP_E_UNKNOWNLCID" ); break;
|
||||
case DISP_E_BADPARAMCOUNT: hb_retc( "DISP_E_BADPARAMCOUNT" ); break;
|
||||
case DISP_E_BADVARTYPE: hb_retc( "DISP_E_BADVARTYPE" ); break;
|
||||
case DISP_E_EXCEPTION: hb_retc( "DISP_E_EXCEPTION" ); break;
|
||||
case DISP_E_MEMBERNOTFOUND: hb_retc( "DISP_E_MEMBERNOTFOUND" ); break;
|
||||
case DISP_E_NONAMEDARGS: hb_retc( "DISP_E_NONAMEDARGS" ); break;
|
||||
case DISP_E_OVERFLOW: hb_retc( "DISP_E_OVERFLOW" ); break;
|
||||
case DISP_E_PARAMNOTFOUND: hb_retc( "DISP_E_PARAMNOTFOUND" ); break;
|
||||
case DISP_E_TYPEMISMATCH: hb_retc( "DISP_E_TYPEMISMATCH" ); break;
|
||||
case DISP_E_UNKNOWNINTERFACE: hb_retc( "DISP_E_UNKNOWNINTERFACE" ); break;
|
||||
case DISP_E_PARAMNOTOPTIONAL: hb_retc( "DISP_E_PARAMNOTOPTIONAL" ); break;
|
||||
default: hb_retc( "Unknown error" ); break;
|
||||
}
|
||||
}
|
||||
|
||||
HB_FUNC( OLEISOBJECT )
|
||||
@@ -559,99 +583,11 @@ HB_FUNC( OLEISOBJECT )
|
||||
|
||||
HB_FUNC( OLEUNINITIALIZE )
|
||||
{
|
||||
if( s_lInitialized )
|
||||
OleUninitialize();
|
||||
s_lInitialized = 0;
|
||||
}
|
||||
|
||||
HB_FUNC( OLE2TXTERROR )
|
||||
{
|
||||
switch( (LONG) s_nOleError)
|
||||
if( s_bInitialized )
|
||||
{
|
||||
case S_OK:
|
||||
hb_retc( "S_OK" );
|
||||
break;
|
||||
|
||||
case CO_E_CLASSSTRING:
|
||||
hb_retc( "CO_E_CLASSSTRING" );
|
||||
break;
|
||||
|
||||
case OLE_E_WRONGCOMPOBJ:
|
||||
hb_retc( "OLE_E_WRONGCOMPOBJ" );
|
||||
break;
|
||||
|
||||
case REGDB_E_CLASSNOTREG:
|
||||
hb_retc( "REGDB_E_CLASSNOTREG" );
|
||||
break;
|
||||
|
||||
case REGDB_E_WRITEREGDB:
|
||||
hb_retc( "REGDB_E_WRITEREGDB" );
|
||||
break;
|
||||
|
||||
case E_OUTOFMEMORY:
|
||||
hb_retc( "E_OUTOFMEMORY" );
|
||||
break;
|
||||
|
||||
case E_INVALIDARG:
|
||||
hb_retc( "E_INVALIDARG" );
|
||||
break;
|
||||
|
||||
case E_UNEXPECTED:
|
||||
hb_retc( "E_UNEXPECTED" );
|
||||
break;
|
||||
|
||||
case DISP_E_UNKNOWNNAME:
|
||||
hb_retc( "DISP_E_UNKNOWNNAME" );
|
||||
break;
|
||||
|
||||
case DISP_E_UNKNOWNLCID:
|
||||
hb_retc( "DISP_E_UNKNOWNLCID" );
|
||||
break;
|
||||
|
||||
case DISP_E_BADPARAMCOUNT:
|
||||
hb_retc( "DISP_E_BADPARAMCOUNT" );
|
||||
break;
|
||||
|
||||
case DISP_E_BADVARTYPE:
|
||||
hb_retc( "DISP_E_BADVARTYPE" );
|
||||
break;
|
||||
|
||||
case DISP_E_EXCEPTION:
|
||||
hb_retc( "DISP_E_EXCEPTION" );
|
||||
break;
|
||||
|
||||
case DISP_E_MEMBERNOTFOUND:
|
||||
hb_retc( "DISP_E_MEMBERNOTFOUND" );
|
||||
break;
|
||||
|
||||
case DISP_E_NONAMEDARGS:
|
||||
hb_retc( "DISP_E_NONAMEDARGS" );
|
||||
break;
|
||||
|
||||
case DISP_E_OVERFLOW:
|
||||
hb_retc( "DISP_E_OVERFLOW" );
|
||||
break;
|
||||
|
||||
case DISP_E_PARAMNOTFOUND:
|
||||
hb_retc( "DISP_E_PARAMNOTFOUND" );
|
||||
break;
|
||||
|
||||
case DISP_E_TYPEMISMATCH:
|
||||
hb_retc( "DISP_E_TYPEMISMATCH" );
|
||||
break;
|
||||
|
||||
case DISP_E_UNKNOWNINTERFACE:
|
||||
hb_retc( "DISP_E_UNKNOWNINTERFACE" );
|
||||
break;
|
||||
|
||||
case DISP_E_PARAMNOTOPTIONAL:
|
||||
hb_retc( "DISP_E_PARAMNOTOPTIONAL" );
|
||||
break;
|
||||
|
||||
default:
|
||||
hb_retc( "Unknown error" );
|
||||
break;
|
||||
};
|
||||
OleUninitialize();
|
||||
s_bInitialized = FALSE;
|
||||
}
|
||||
}
|
||||
|
||||
HB_FUNC( GETOLEOBJECT )
|
||||
@@ -662,10 +598,7 @@ HB_FUNC( GETOLEOBJECT )
|
||||
IUnknown *pUnk = NULL;
|
||||
char *cOleName = hb_parc( 1 );
|
||||
void *pDisp = NULL; /* IDispatch */
|
||||
/* void *
|
||||
* used intentionally to inform compiler that there is no
|
||||
* strict-aliasing
|
||||
*/
|
||||
/* 'void *' used intentionally to inform compiler that there is no strict-aliasing */
|
||||
|
||||
s_nOleError = S_OK;
|
||||
|
||||
@@ -701,7 +634,7 @@ HB_FUNC( GETOLEOBJECT )
|
||||
s_nOleError = pUnk->lpVtbl->QueryInterface( pUnk, ( REFIID ) riid, &pDisp );
|
||||
}
|
||||
|
||||
hb_retnl( ( LONG ) pDisp );
|
||||
hb_retptr( pDisp );
|
||||
}
|
||||
|
||||
HB_FUNC( MESSAGEBOX )
|
||||
|
||||
Reference in New Issue
Block a user