2010-09-13 17:00 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)

* harbour/contrib/hbwin/hbwinole.h
  * harbour/contrib/hbwin/axcore.c
  * harbour/contrib/hbwin/olecore.c
  * harbour/contrib/hbwin/hbolesrv.c
    + added new 'HB_USHORT uiClass' parameter to hb_oleDispInvoke()
      C function and updated corresponding code.
This commit is contained in:
Przemyslaw Czerpak
2010-09-13 15:01:10 +00:00
parent 0e90340325
commit 7f2ff9b35f
5 changed files with 30 additions and 14 deletions

View File

@@ -16,6 +16,14 @@
The license applies to all entries newer than 2009-04-28.
*/
2010-09-13 17:00 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/contrib/hbwin/hbwinole.h
* harbour/contrib/hbwin/axcore.c
* harbour/contrib/hbwin/olecore.c
* harbour/contrib/hbwin/hbolesrv.c
+ added new 'HB_USHORT uiClass' parameter to hb_oleDispInvoke()
C function and updated corresponding code.
2010-09-13 15:46 UTC+0200 Przemyslaw Czerpak (druzus/at/priv.onet.pl)
* harbour/contrib/hbwin/olecore.c
! use hb_oleVariantToItemEx() instead of hb_oleVariantToItem()

View File

@@ -241,6 +241,7 @@ typedef struct {
DWORD dwCookie;
IID rriid;
PHB_ITEM pItemHandler;
HB_USHORT uiClass;
} ISink;
@@ -350,7 +351,8 @@ static HRESULT STDMETHODCALLTYPE Invoke( IDispatch* lpThis, DISPID dispid, REFII
}
if( pAction && hb_oleDispInvoke( NULL, pAction, pKey,
pParams, pVarResult, NULL ) )
pParams, pVarResult, NULL,
( ( ISink* ) lpThis )->uiClass ) )
hr = S_OK;
hb_stackPop();
@@ -414,6 +416,7 @@ HB_FUNC( __AXREGISTERHANDLER ) /* ( pDisp, bHandler [, cID] ) --> pSink */
hb_oleItemSetCallBack( hb_param( 1, HB_IT_POINTER ),
&pSink->pItemHandler );
pSink->rriid = rriid;
pSink->uiClass = 0;
lOleError = HB_VTBL( pCP )->Advise( HB_THIS_( pCP ) ( IUnknown* ) pSink, &dwCookie );
pSink->pConnectionPoint = pCP;
pSink->dwCookie = dwCookie;

View File

@@ -368,6 +368,7 @@ static HRESULT STDMETHODCALLTYPE Invoke( IDispatch* lpThis, DISPID dispid, REFII
{
PHB_DYNS pDynSym;
PHB_ITEM pAction;
HB_USHORT uiClass = 0;
HB_SYMBOL_UNUSED( lcid );
HB_SYMBOL_UNUSED( pExcepInfo );
@@ -392,7 +393,7 @@ static HRESULT STDMETHODCALLTYPE Invoke( IDispatch* lpThis, DISPID dispid, REFII
{
fResult = hb_oleDispInvoke( NULL, pAction,
hb_hashGetKeyAt( s_pMsgHash, ( HB_SIZE ) dispid ),
pParams, pVarResult, s_objItemToVariant );
pParams, pVarResult, s_objItemToVariant, uiClass );
}
}
else if( HB_IS_HASH( pAction ) )
@@ -416,7 +417,8 @@ static HRESULT STDMETHODCALLTYPE Invoke( IDispatch* lpThis, DISPID dispid, REFII
{
PHB_SYMB pSym = hb_itemGetSymbol( pItem );
fResult = hb_oleDispInvoke( pSym, pSym ? pAction : pItem, NULL,
pParams, pVarResult, s_objItemToVariant );
pParams, pVarResult,
s_objItemToVariant, uiClass );
}
}
else if( ( wFlags & DISPATCH_PROPERTYGET ) != 0 &&
@@ -429,7 +431,7 @@ static HRESULT STDMETHODCALLTYPE Invoke( IDispatch* lpThis, DISPID dispid, REFII
else if( ( wFlags & DISPATCH_PROPERTYPUT ) != 0 &&
pParams->cArgs == 1 )
{
hb_oleVariantToItem( pItem, &pParams->rgvarg[ 0 ] );
hb_oleVariantToItemEx( pItem, &pParams->rgvarg[ 0 ], uiClass );
fResult = HB_TRUE;
}
}
@@ -451,8 +453,9 @@ static HRESULT STDMETHODCALLTYPE Invoke( IDispatch* lpThis, DISPID dispid, REFII
}
if( pDynSym && hb_objHasMessage( pAction, pDynSym ) )
{
fResult = hb_oleDispInvoke( hb_dynsymSymbol( pDynSym ), pAction, NULL,
pParams, pVarResult, s_objItemToVariant );
fResult = hb_oleDispInvoke( hb_dynsymSymbol( pDynSym ),
pAction, NULL, pParams, pVarResult,
s_objItemToVariant, uiClass );
}
}
if( !fResult )
@@ -470,7 +473,7 @@ static HRESULT STDMETHODCALLTYPE Invoke( IDispatch* lpThis, DISPID dispid, REFII
{
PHB_ITEM pItem = hb_stackAllocItem();
hb_oleVariantToItem( pItem, &pParams->rgvarg[ 0 ] );
hb_oleVariantToItemEx( pItem, &pParams->rgvarg[ 0 ], uiClass );
hb_memvarSetValue( hb_dynsymSymbol( pDynSym ), pItem );
hb_stackPop();
return S_OK;
@@ -493,8 +496,9 @@ static HRESULT STDMETHODCALLTYPE Invoke( IDispatch* lpThis, DISPID dispid, REFII
else if( ( wFlags & DISPATCH_METHOD ) == 0 ||
!hb_dynsymIsFunction( pDynSym ) )
return DISP_E_MEMBERNOTFOUND;
else if( !hb_oleDispInvoke( hb_dynsymSymbol( pDynSym ), NULL, NULL,
pParams, pVarResult, s_objItemToVariant ) )
else if( !hb_oleDispInvoke( hb_dynsymSymbol( pDynSym ),
NULL, NULL, pParams, pVarResult,
s_objItemToVariant, uiClass ) )
return DISP_E_MEMBERNOTFOUND;
}

View File

@@ -158,7 +158,7 @@ extern HB_EXPORT PHB_ITEM hb_oleItemGetCallBack( PHB_ITEM pItem );
extern HB_EXPORT void hb_oleItemSetCallBack( PHB_ITEM pItem, PHB_ITEM * pCallBack );
extern HB_EXPORT HB_BOOL hb_oleDispInvoke( PHB_SYMB pSym, PHB_ITEM pObject, PHB_ITEM pParam,
DISPPARAMS * pParams, VARIANT* pVarResult,
HB_OLEOBJ_FUNC pObjFunc );
HB_OLEOBJ_FUNC pObjFunc, HB_USHORT uiClass );
/* activex control */
extern HB_EXPORT HB_BOOL hb_oleAxInit( void );

View File

@@ -1100,7 +1100,7 @@ HB_OLE_PARAM_REF;
HB_BOOL hb_oleDispInvoke( PHB_SYMB pSym, PHB_ITEM pObject, PHB_ITEM pParam,
DISPPARAMS* pParams, VARIANT* pVarResult,
HB_OLEOBJ_FUNC pObjFunc )
HB_OLEOBJ_FUNC pObjFunc, HB_USHORT uiClass )
{
if( !pSym && HB_IS_SYMBOL( pObject ) )
{
@@ -1143,12 +1143,13 @@ HB_BOOL hb_oleDispInvoke( PHB_SYMB pSym, PHB_ITEM pObject, PHB_ITEM pParam,
( ii < iRefs ) )
{
refArray[ ii ].variant = &pParams->rgvarg[ iCount - i ];
hb_oleVariantToItem( refArray[ ii ].item, refArray[ ii ].variant );
hb_oleVariantToItemEx( refArray[ ii ].item,
refArray[ ii ].variant, uiClass );
hb_vmPushItemRef( refArray[ ii++ ].item );
}
else
hb_oleVariantToItem( hb_stackAllocItem(),
&pParams->rgvarg[ iCount - i ] );
hb_oleVariantToItemEx( hb_stackAllocItem(),
&pParams->rgvarg[ iCount - i ], uiClass );
}
if( pObject && !HB_IS_HASH( pObject ) )