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:
@@ -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()
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
|
||||
@@ -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 );
|
||||
|
||||
@@ -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 ) )
|
||||
|
||||
Reference in New Issue
Block a user