2010-05-26 22:54 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/contrib/hbwin/hbwinole.h
* harbour/contrib/hbwin/olecore.c
* modified hb_oleVariantUpdate() parameters
+ added automatic conversion of HVM objects to OLE objects for
for parameters passed by reference to Harbour OLE server methods.
* harbour/contrib/hbwin/hbolesrv.c
+ added automatic conversion of HVM objects to OLE objects for
memvars redirected to OLE instance variables.
! fixed typo
This commit is contained in:
@@ -17,6 +17,18 @@
|
||||
past entries belonging to author(s): Viktor Szakats.
|
||||
*/
|
||||
|
||||
2010-05-26 22:54 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
|
||||
* harbour/contrib/hbwin/hbwinole.h
|
||||
* harbour/contrib/hbwin/olecore.c
|
||||
* modified hb_oleVariantUpdate() parameters
|
||||
+ added automatic conversion of HVM objects to OLE objects for
|
||||
for parameters passed by reference to Harbour OLE server methods.
|
||||
|
||||
* harbour/contrib/hbwin/hbolesrv.c
|
||||
+ added automatic conversion of HVM objects to OLE objects for
|
||||
memvars redirected to OLE instance variables.
|
||||
! fixed typo
|
||||
|
||||
2010-05-26 17:04 UTC+0200 Viktor Szakats (harbour.01 syenar.hu)
|
||||
* utils/hbmk2/hbmk2.prg
|
||||
* utils/hbmk2/hbmk2.pt_BR.po
|
||||
|
||||
@@ -433,7 +433,7 @@ static HRESULT STDMETHODCALLTYPE Invoke( IDispatch* lpThis, DISPID dispid, REFII
|
||||
pParams->cArgs == 0 )
|
||||
{
|
||||
if( pVarResult )
|
||||
hb_oleItemToVariant( pVarResult, pItem );
|
||||
hb_oleItemToVariantEx( pVarResult, pItem, s_objItemToVariant );
|
||||
fResult = HB_TRUE;
|
||||
}
|
||||
else if( ( wFlags & DISPATCH_PROPERTYPUT ) != 0 &&
|
||||
@@ -497,7 +497,7 @@ static HRESULT STDMETHODCALLTYPE Invoke( IDispatch* lpThis, DISPID dispid, REFII
|
||||
{
|
||||
PHB_ITEM pItem = hb_stackAllocItem();
|
||||
hb_memvarGet( pItem, hb_dynsymSymbol( pDynSym ) );
|
||||
hb_oleItemToVariant( pVarResult, pItem );
|
||||
hb_oleItemToVariantEx( pVarResult, pItem, s_objItemToVariant );
|
||||
hb_stackPop();
|
||||
}
|
||||
return S_OK;
|
||||
@@ -611,6 +611,7 @@ static HB_BOOL s_objItemToVariant( VARIANT * pVariant, PHB_ITEM pItem )
|
||||
{
|
||||
pVariant->n1.n2.vt = VT_DISPATCH;
|
||||
pVariant->n1.n2.n3.pdispVal = ( IDispatch * ) pvObj;
|
||||
return HB_TRUE;
|
||||
}
|
||||
return HB_FALSE;
|
||||
}
|
||||
|
||||
@@ -113,7 +113,7 @@ extern HB_EXPORT void hb_oleSetError( HRESULT lOleError );
|
||||
extern HB_EXPORT void hb_oleVariantToItem( PHB_ITEM pItem, VARIANT * pVariant );
|
||||
extern HB_EXPORT void hb_oleItemToVariant( VARIANT * pVariant, PHB_ITEM pItem );
|
||||
extern HB_EXPORT void hb_oleItemToVariantEx( VARIANT* pVariant, PHB_ITEM pItem, HB_OLEOBJ_FUNC pObjFunc );
|
||||
extern HB_EXPORT void hb_oleVariantUpdate( VARIANT * pVariant, PHB_ITEM pItem );
|
||||
extern HB_EXPORT void hb_oleVariantUpdate( VARIANT * pVariant, PHB_ITEM pItem, HB_OLEOBJ_FUNC pObjFunc );
|
||||
extern HB_EXPORT IDispatch* hb_oleParam( int iParam );
|
||||
extern HB_EXPORT IDispatch* hb_oleItemGet( PHB_ITEM pItem );
|
||||
extern HB_EXPORT PHB_ITEM hb_oleItemPut( PHB_ITEM pItem, IDispatch * pDisp );
|
||||
|
||||
@@ -502,7 +502,7 @@ static void hb_oleItemToVariantRef( VARIANT* pVariant, PHB_ITEM pItem,
|
||||
long lIndex[ 1 ];
|
||||
|
||||
VariantInit( &vItem );
|
||||
hb_oleItemToVariantRef( &vItem, hb_arrayGetItemPtr( pItem, ul + 1 ), NULL, NULL );
|
||||
hb_oleItemToVariantRef( &vItem, hb_arrayGetItemPtr( pItem, ul + 1 ), NULL, pObjFunc );
|
||||
lIndex[ 0 ] = ( long ) ul;
|
||||
SafeArrayPutElement( pSafeArray, lIndex, &vItem );
|
||||
VariantClear( &vItem );
|
||||
@@ -538,8 +538,8 @@ void hb_oleItemToVariant( VARIANT* pVariant, PHB_ITEM pItem )
|
||||
}
|
||||
|
||||
|
||||
void hb_oleItemToVariantExt( VARIANT* pVariant, PHB_ITEM pItem,
|
||||
HB_OLEOBJ_FUNC pObjFunc )
|
||||
void hb_oleItemToVariantEx( VARIANT* pVariant, PHB_ITEM pItem,
|
||||
HB_OLEOBJ_FUNC pObjFunc )
|
||||
{
|
||||
hb_oleItemToVariantRef( pVariant, pItem, NULL, pObjFunc );
|
||||
}
|
||||
@@ -900,7 +900,8 @@ void hb_oleVariantToItem( PHB_ITEM pItem, VARIANT* pVariant )
|
||||
}
|
||||
|
||||
|
||||
void hb_oleVariantUpdate( VARIANT* pVariant, PHB_ITEM pItem )
|
||||
void hb_oleVariantUpdate( VARIANT* pVariant, PHB_ITEM pItem,
|
||||
HB_OLEOBJ_FUNC pObjFunc )
|
||||
{
|
||||
switch( pVariant->n1.n2.vt )
|
||||
{
|
||||
@@ -919,6 +920,18 @@ void hb_oleVariantUpdate( VARIANT* pVariant, PHB_ITEM pItem )
|
||||
HB_VTBL( pdispVal )->Release( HB_THIS( pdispVal ) );
|
||||
}
|
||||
}
|
||||
else if( pObjFunc && HB_IS_OBJECT( pItem ) )
|
||||
{
|
||||
VARIANTARG variant;
|
||||
VariantInit( &variant );
|
||||
if( pObjFunc( &variant, pItem ) )
|
||||
{
|
||||
IDispatch* pdispVal = *pVariant->n1.n2.n3.ppdispVal;
|
||||
*pVariant->n1.n2.n3.ppdispVal = variant.n1.n2.n3.pdispVal;
|
||||
if( pdispVal )
|
||||
HB_VTBL( pdispVal )->Release( HB_THIS( pdispVal ) );
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -944,6 +957,18 @@ void hb_oleVariantUpdate( VARIANT* pVariant, PHB_ITEM pItem )
|
||||
}
|
||||
}
|
||||
}
|
||||
else if( pObjFunc && HB_IS_OBJECT( pItem ) )
|
||||
{
|
||||
VARIANTARG variant;
|
||||
VariantInit( &variant );
|
||||
if( pObjFunc( &variant, pItem ) )
|
||||
{
|
||||
IDispatch* pdispVal = *pVariant->n1.n2.n3.ppdispVal;
|
||||
*pVariant->n1.n2.n3.ppdispVal = variant.n1.n2.n3.pdispVal;
|
||||
if( pdispVal )
|
||||
HB_VTBL( pdispVal )->Release( HB_THIS( pdispVal ) );
|
||||
}
|
||||
}
|
||||
break;
|
||||
}
|
||||
|
||||
@@ -1041,7 +1066,7 @@ void hb_oleVariantUpdate( VARIANT* pVariant, PHB_ITEM pItem )
|
||||
#endif
|
||||
|
||||
case VT_BYREF | VT_VARIANT:
|
||||
hb_oleItemToVariantRef( pVariant->n1.n2.n3.pvarVal, pItem, NULL, NULL );
|
||||
hb_oleItemToVariantRef( pVariant->n1.n2.n3.pvarVal, pItem, NULL, pObjFunc );
|
||||
break;
|
||||
|
||||
case VT_VARIANT | VT_ARRAY | VT_BYREF:
|
||||
@@ -1121,7 +1146,7 @@ HB_BOOL hb_oleDispInvoke( PHB_SYMB pSym, PHB_ITEM pObject, PHB_ITEM pParam,
|
||||
hb_oleItemToVariantRef( pVarResult, hb_stackReturnItem(), NULL, pObjFunc );
|
||||
|
||||
for( i = 0; i < iRefs; i++ )
|
||||
hb_oleVariantUpdate( refArray[ i ].variant, refArray[ i ].item );
|
||||
hb_oleVariantUpdate( refArray[ i ].variant, refArray[ i ].item, pObjFunc );
|
||||
|
||||
for( i = 0; i < iRefs; i++ )
|
||||
hb_stackPop();
|
||||
|
||||
Reference in New Issue
Block a user