summaryrefslogtreecommitdiff
path: root/extensions/test/ole/OleConverterVar1/convTest.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'extensions/test/ole/OleConverterVar1/convTest.cxx')
-rw-r--r--extensions/test/ole/OleConverterVar1/convTest.cxx660
1 files changed, 0 insertions, 660 deletions
diff --git a/extensions/test/ole/OleConverterVar1/convTest.cxx b/extensions/test/ole/OleConverterVar1/convTest.cxx
deleted file mode 100644
index 0bc278b06..000000000
--- a/extensions/test/ole/OleConverterVar1/convTest.cxx
+++ /dev/null
@@ -1,660 +0,0 @@
-/* -*- Mode: C++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*- */
-/*************************************************************************
- *
- * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
- *
- * Copyright 2000, 2010 Oracle and/or its affiliates.
- *
- * OpenOffice.org - a multi-platform office productivity suite
- *
- * This file is part of OpenOffice.org.
- *
- * OpenOffice.org is free software: you can redistribute it and/or modify
- * it under the terms of the GNU Lesser General Public License version 3
- * only, as published by the Free Software Foundation.
- *
- * OpenOffice.org is distributed in the hope that it will be useful,
- * but WITHOUT ANY WARRANTY; without even the implied warranty of
- * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
- * GNU Lesser General Public License version 3 for more details
- * (a copy is included in the LICENSE file that accompanied this code).
- *
- * You should have received a copy of the GNU Lesser General Public License
- * version 3 along with OpenOffice.org. If not, see
- * <http://www.openoffice.org/license.html>
- * for a copy of the LGPLv3 License.
- *
- ************************************************************************/
-
-// MARKER(update_precomp.py): autogen include statement, do not remove
-#include "precompiled_extensions.hxx"
-
-#pragma warning (disable: 4917)
-#include <windows.h>
-#include <comdef.h>
-#include <tchar.h>
-#include <atlbase.h>
-extern CComModule _Module;
-#include<atlcom.h>
-
-#include <stdio.h>
-#include <com/sun/star/bridge/ModelDependent.hpp>
-#include <com/sun/star/bridge/XBridgeSupplier2.hpp>
-#include <com/sun/star/lang/XMultiServiceFactory.hpp>
-#include <com/sun/star/uno/XComponentContext.hpp>
-#include <com/sun/star/lang/XMultiComponentFactory.hpp>
-
-#include <oletest/XTestSequence.hpp>
-#include <rtl/process.h>
-#include <com/sun/star/uno/Reference.h>
-#include <cppuhelper/servicefactory.hxx>
-#include <cppuhelper/bootstrap.hxx>
-#include <rtl/string.h>
-
-
-CComModule _Module;
-BEGIN_OBJECT_MAP(ObjectMap)
-END_OBJECT_MAP()
-
-#include "smartarray.h"
-using namespace com::sun::star::bridge;
-using namespace com::sun::star::bridge::ModelDependent;
-using namespace com::sun::star::lang;
-using namespace com::sun::star::uno;
-using namespace oletest;
-using namespace cppu;
-
-using ::rtl::OUString;
-
-HRESULT doTest();
-HRESULT InitializeParameter();
-void printResultVariantArray( VARIANT & var);
-void printVariant( VARIANT & var);
-
-
-
-
-int SAL_CALL _tmain( int argc, _TCHAR * argv[] )
-{
- HRESULT hr;
- if( FAILED( hr=CoInitialize(NULL)))
- {
- _tprintf(_T("CoInitialize failed \n"));
- return -1;
- }
-
-
- _Module.Init( ObjectMap, GetModuleHandle( NULL));
-
- if( FAILED(hr=doTest()))
- {
- _com_error err( hr);
- const TCHAR * errMsg= err.ErrorMessage();
- MessageBox( NULL, errMsg, "Test failed", MB_ICONERROR);
- }
-
-
- _Module.Term();
- CoUninitialize();
- return 0;
-}
-char _c[]={ 1,2,3,4,5};
-short _short[]={0xffff, 1, 11 ,111, 1111 };
-unsigned short _ushort[]={0xffff, 1, 11 ,111, 1111 };
-long _long[]= { 0xffffffff, 11, 111 ,1111, 1111 };
-unsigned long _ulong[]= { 0xffffffff, 11, 111 ,1111, 1111 };
-float _float[]= { 12345.f, 1234.5f, 123.45f, 12.345f, 1.2345f};
-double _double[]= {12345, 1234.5, 123.45, 12.345, 1.2345};
-
-CComVariant _variant[]= {L"variant 1", L"variant2", L"variant3"};
-wchar_t _wchar[]= {L'1', L'2', L'3', L'A', L' '};
-BSTR _bstr[]={L"Ich", L"bin", L"ein", L"Hamburger", L"Jung"};
-SmartArray<char> arByte( _c, 5, VT_I1);
-SmartArray< short> arShort( _short, 5, VT_I2);
-//SmartArray< unsigned short> arUShort( _ushort, 5, VT_UI2);
-SmartArray< long> arLong( _long, 5, VT_I4);
-//SmartArray< unsigned long> arULong( _ulong, 5, VT_UI4);
-//SmartArray< float> arFloat( _float, 5, VT_R4 );
-SmartArray< double> arDouble( _double, 5, VT_R8 );
-//SmartArray< unsigned short> arWChar( _wchar, 5, VT_UI2 );
-SmartArray< wchar_t* > arString( _bstr, 5, VT_BSTR);
-SmartArray< VARIANT > arVariant( _variant, 3, VT_VARIANT);
-
-
-HRESULT doTest()
-{
- HRESULT hr;
- USES_CONVERSION;
- CComPtr<IUnknown> spUnkMgr;
-
- putenv("UNO_TYPES=types.rdb");
- putenv("UNO_SERVICES=services.rdb");
- Reference<XComponentContext> xContext = defaultBootstrap_InitialComponentContext();
-
- Reference< XMultiComponentFactory > mgr = xContext->getServiceManager();//createRegistryServiceFactory( OUString(L"services.rdb"));
- Reference< XInterface > xIntSupplier= mgr->createInstanceWithContext(
- OUString(L"com.sun.star.bridge.OleBridgeSupplierVar1"), xContext);
- Reference< XBridgeSupplier2 > xSuppl( xIntSupplier, UNO_QUERY);
- Reference <XInterface> xOletest= mgr->createInstanceWithContext(
- OUString(L"oletest.OleTest"), xContext);
- Any any;
- any <<= xOletest;
- sal_uInt8 arId[16];
- rtl_getGlobalProcessId( arId);
- Any target= xSuppl->createBridge( any, Sequence<sal_Int8>( (sal_Int8*)arId, 16), UNO, OLE);
- CComDispatchDriver oletest;
- if (target.getValueTypeClass() == getCppuType((sal_uInt32*) 0).getTypeClass())
- {
- VARIANT* pVariant = *(VARIANT**)target.getValue();
-
- oletest= pVariant->pdispVal;
-
- VariantClear(pVariant);
- CoTaskMemFree(pVariant);
- }
-
- CComVariant varRet;
- CComVariant varParam1;
- CComVariant varParam2;
- CComVariant varParam3;
- CComVariant varParam4;
-
- long value= 100;
- varParam1.vt= VT_I1 | VT_BYREF;
- varParam1.plVal= &value;
-
- // Testing the caching of DISPIDs and the process of aquiring member information
- // on demand in IDispatch::Invoke
- // Step through the corresponding IDispatch implementation of the ole bridge
- hr= oletest.Invoke1(static_cast<LPCOLESTR>(L"testinout_methodByte"), &varParam1, &varRet);
- hr= oletest.Invoke1(static_cast<LPCOLESTR>(L"testinout_methodByte"), &varParam1, &varRet);
- // Name ok but different case
- hr= oletest.Invoke1(static_cast<LPCOLESTR>(L"Testinout_methodByte"), &varParam1, &varRet);
- hr= oletest.Invoke1(static_cast<LPCOLESTR>(L"Testinout_methodByte"), &varParam1, &varRet);
- // not existing member
- hr= oletest.Invoke1(static_cast<LPCOLESTR>(L"Testinout"), &varParam1, &varRet);
- hr= oletest.Invoke1(static_cast<LPCOLESTR>(L"Testinout"), &varParam1, &varRet);
-
- // Property
- varParam1.vt= VT_ARRAY | VT_I1;
- varParam1.parray= (SAFEARRAY*)arByte;
- hr= oletest.PutPropertyByName( static_cast<LPCOLESTR>(L"AttrByte"), &varParam1);
- hr= oletest.PutPropertyByName( static_cast<LPCOLESTR>(L"AttrByte"), &varParam1);
- // Name ok but different case
- hr= oletest.PutPropertyByName( static_cast<LPCOLESTR>(L"attrByte"), &varParam1);
- hr= oletest.PutPropertyByName( static_cast<LPCOLESTR>(L"attrByte"), &varParam1);
- // not existing member
- hr= oletest.PutPropertyByName( static_cast<LPCOLESTR>(L"attr"), &varParam1);
- hr= oletest.PutPropertyByName( static_cast<LPCOLESTR>(L"attr"), &varParam1);
-
- // PropertyGet
- hr= oletest.GetPropertyByName( static_cast<LPCOLESTR>(L"AttrByte"), &varRet);
-
- hr= oletest.GetPropertyByName( static_cast<LPCOLESTR>(L"attrByte"), &varRet);
- hr= oletest.GetPropertyByName( static_cast<LPCOLESTR>(L"attrByte"), &varRet);
- //not existing member
- hr= oletest.GetPropertyByName( static_cast<LPCOLESTR>(L"attrBy"), &varRet);
- hr= oletest.GetPropertyByName( static_cast<LPCOLESTR>(L"attrBy"), &varRet);
-
- DISPID dispid;
- LPOLESTR method= L"methodByte";
- hr = oletest.p->GetIDsOfNames(IID_NULL, &method, 1, LOCALE_USER_DEFAULT, &dispid);
-
-
- CComVariant arg[1];
- arg[0].vt= VT_ARRAY | VT_I1;
- arg[0].parray= (SAFEARRAY*)arByte;
- DISPPARAMS params={ arg,0,1,0};
-
- hr = oletest.p->Invoke(dispid, IID_NULL, LOCALE_USER_DEFAULT,
- DISPATCH_METHOD | DISPATCH_PROPERTYPUT, &params, &varRet, NULL, NULL);
-
- hr = oletest.p->Invoke(dispid, IID_NULL, LOCALE_USER_DEFAULT,
- DISPATCH_METHOD | DISPATCH_PROPERTYPUT, &params, &varRet, NULL, NULL);
-
- // different case
- LPOLESTR method2= L"MEthodByte";
- hr = oletest.p->GetIDsOfNames(IID_NULL, &method2, 1, LOCALE_USER_DEFAULT, &dispid);
-
- hr = oletest.p->Invoke(dispid, IID_NULL, LOCALE_USER_DEFAULT,
- DISPATCH_METHOD | DISPATCH_PROPERTYPUT, &params, &varRet, NULL, NULL);
-
- hr = oletest.p->Invoke(dispid, IID_NULL, LOCALE_USER_DEFAULT,
- DISPATCH_METHOD | DISPATCH_PROPERTYPUT, &params, &varRet, NULL, NULL);
-
- LPOLESTR attrib= L"AttrByte";
- hr = oletest.p->GetIDsOfNames(IID_NULL, &attrib, 1, LOCALE_USER_DEFAULT, &dispid);
-
- hr = oletest.p->Invoke( dispid, IID_NULL, LOCALE_USER_DEFAULT,
- DISPATCH_METHOD | DISPATCH_PROPERTYPUTREF, &params, &varRet, NULL, NULL);
-
- hr = oletest.p->Invoke( dispid, IID_NULL, LOCALE_USER_DEFAULT,
- DISPATCH_METHOD | DISPATCH_PROPERTYGET, &params, &varRet, NULL, NULL);
-
-
-
- CComVariant varByteArray;
- varByteArray.vt= VT_ARRAY | VT_I1;
- varByteArray.parray= (SAFEARRAY*)arByte;
- CComVariant varShortArray;
- varShortArray.vt= VT_ARRAY | VT_I2;
- varShortArray.parray= (SAFEARRAY*)arShort;
- CComVariant varLongArray;
- varLongArray.vt= VT_ARRAY | VT_I4;
- varLongArray.parray= (SAFEARRAY*)arLong;
- CComVariant varDoubleArray;
- varDoubleArray.vt= VT_ARRAY | VT_R8;
- varDoubleArray.parray= (SAFEARRAY*)arDouble;
- CComVariant varStringArray;
- varStringArray.vt= VT_ARRAY | VT_BSTR;
- varStringArray.parray= (SAFEARRAY*)arString;
- CComVariant varArray;
- varArray.vt= VT_ARRAY | VT_VARIANT;
- varArray.parray= (SAFEARRAY*)arVariant;
-
- FONTDESC fd={ sizeof( fd), L"ARIAL", 10, FW_NORMAL, 0, 0, 0, 0};
-
-
- CComPtr< IUnknown > unk1;
- CComPtr< IUnknown > unk2;
- CComPtr< IUnknown > unk3;
-
- IUnknown* _unknown[3];
- hr= OleCreateFontIndirect( &fd, __uuidof( IUnknown), (void**)&unk1.p);
- hr= OleCreateFontIndirect( &fd, __uuidof( IUnknown), (void**)&unk2.p);
- hr= OleCreateFontIndirect( &fd, __uuidof( IUnknown), (void**)&unk3.p);
- _unknown[0]= unk1;
- _unknown[1]= unk2;
- _unknown[2]= unk3;
- SmartArray<IUnknown*> arUnknown( _unknown, 3, VT_UNKNOWN);
-
- CComVariant varUnkArray;
- varUnkArray.vt= VT_ARRAY | VT_UNKNOWN;
- varUnkArray.parray= (SAFEARRAY*)arUnknown;
-
- // preparing out parameter;
- char byteOut;
- CComVariant varOutByte; //###
- varOutByte.vt= VT_BYREF | VT_UI1;
- V_I1REF(&varOutByte)= &byteOut;
- short shortOut;
- CComVariant varOutShort; //###
- varOutShort.vt= VT_BYREF | VT_I2;
- V_I2REF( &varOutShort)= &shortOut;
- long longOut;
- CComVariant varOutLong; //###
- varOutLong.vt= VT_BYREF | VT_I4;
- V_I4REF( &varOutLong)= &longOut;
- double doubleOut;
- CComVariant varOutDouble; //###
- varOutDouble.vt= VT_BYREF | VT_R8;
- V_R8REF( &varOutDouble)= &doubleOut;
- BSTR bstrOut= NULL;
- CComVariant varOutString; //###
- varOutString.vt= VT_BYREF | VT_BSTR;
- V_BSTRREF(&varOutString)= &bstrOut;
- CComVariant variantOut;
- CComVariant varOutAny; //###
- varOutAny.vt= VT_BYREF | VT_VARIANT;
- V_VARIANTREF(&varOutAny)= &variantOut;
-
- CComPtr<IDispatch> dispOut;
- CComVariant varOutXInterface; //###
- varOutXInterface.vt= VT_BYREF |VT_DISPATCH;
- V_DISPATCHREF(&varOutXInterface)= &dispOut.p;
-
- // In Parameter ( all of type Sequence ###########################################################
- OutputDebugString( _T("In parameter of type Sequence ###########################################\n"
- "The functions return the Sequence parameter \n\n"));
-
- OutputDebugStringA("methodByte | Params: \n");
- printVariant( varByteArray);
- hr= oletest.Invoke1(static_cast<LPCOLESTR>(L"methodByte"), &varByteArray, &varRet);
- OutputDebugStringA("methodByte | return value \n");
- printVariant( varRet);
-
- OutputDebugStringA("methodShort | Params: \n");
- printVariant( varShortArray);
- hr= oletest.Invoke1(static_cast<LPCOLESTR>(L"methodShort"), &varShortArray, &varRet);
- OutputDebugStringA("methodShort | return value \n");
- printVariant( varRet);
-
- OutputDebugStringA("methodLong | Params: \n");
- printVariant( varLongArray);
- hr= oletest.Invoke1(static_cast<LPCOLESTR>(L"methodLong"), &varLongArray, &varRet);
- OutputDebugStringA("methodLong | return value \n");
- printVariant( varRet);
-
- OutputDebugStringA("methodDouble | Params: \n");
- printVariant( varDoubleArray);
- hr= oletest.Invoke1(static_cast<LPCOLESTR>(L"methodDouble"), &varDoubleArray, &varRet);
- OutputDebugStringA("methodDouble | return value \n");
- printVariant( varRet);
-
- OutputDebugStringA("methodString | Params: \n");
- printVariant( varStringArray);
- hr= oletest.Invoke1(static_cast<LPCOLESTR>(L"methodString"), &varStringArray, &varRet);
- OutputDebugStringA("methodString | return value \n");
- printVariant( varRet);
-
- OutputDebugStringA("methodAny | Params: \n");
- printVariant( varArray);
- hr= oletest.Invoke1(static_cast<LPCOLESTR>(L"methodAny"), &varArray, &varRet);
- OutputDebugStringA("methodAny | return value \n");
- printVariant( varRet);
-
- OutputDebugStringA("methodXInterface | Params: \n");
- printVariant( varUnkArray);
- hr= oletest.Invoke1(static_cast<LPCOLESTR>(L"methodXInterface"), &varUnkArray, &varRet);
- OutputDebugStringA("methodAny | return value \n");
- printVariant( varRet);
-
- // Out Parameter ###########################################################################
- OutputDebugString( _T("Out parameter ###########################################\n\n"));
-
- OutputDebugString(_T("testout_methodByte \n"));
- hr= oletest.InvokeN(static_cast<LPCOLESTR>(L"testout_methodByte"), &varOutByte, 1, &varRet);
- OutputDebugString(_T("testout_methodByte | out value: \n"));
- printVariant( varOutByte);
-
- OutputDebugString(_T("testout_methodShort \n"));
- hr= oletest.Invoke1(static_cast<LPCOLESTR>(L"testout_methodShort"), &varOutShort, &varRet);
- OutputDebugString(_T("testout_methodShort | out value: \n"));
- printVariant( varOutShort);
-
- OutputDebugString(_T("testout_methodLong \n"));
- hr= oletest.Invoke1(static_cast<LPCOLESTR>(L"testout_methodLong"), &varOutLong, &varRet);
- OutputDebugString(_T("testout_methodLong | out value: \n"));
- printVariant( varOutLong);
-
- OutputDebugString(_T("testout_methodDouble \n"));
- hr= oletest.Invoke1(static_cast<LPCOLESTR>(L"testout_methodDouble"), &varOutDouble, &varRet);
- OutputDebugString(_T("testout_methodDouble | out value: \n"));
- printVariant( varOutDouble);
-
- OutputDebugString(_T("testout_methodString \n"));
- hr= oletest.Invoke1(static_cast<LPCOLESTR>(L"testout_methodString"), &varOutString, &varRet);
- OutputDebugString(_T("testout_methodString | out value: \n"));
- printVariant( varOutString);
-
- OutputDebugString(_T("testout_methodAny \n"));
- hr= oletest.Invoke1(static_cast<LPCOLESTR>(L"testout_methodAny"), &varOutAny, &varRet);
- OutputDebugString(_T("methodAny | out value: \n"));
- printVariant( varOutAny);
-
- OutputDebugString(_T("testout_methodXInterface \n"));
- hr= oletest.Invoke1(static_cast<LPCOLESTR>(L"testout_methodXInterface"), &varOutXInterface, &varRet);
- OutputDebugString(_T("methodAny | out value: \n"));
- printVariant( varOutXInterface);
- CComDispatchDriver outDisp( *varOutXInterface.ppdispVal);
- CComVariant varAttr3;
- outDisp.GetPropertyByName(L"AttrAny2", &varAttr3);
- ATLTRACE("property OleTest.AttrAny2: %s", W2T(varAttr3.bstrVal));
-
- OutputDebugString(_T("testout_methodMulParams1 ( 2 out Parameter) \n"));
- long longOut2=0;
- CComVariant _params[2];
- longOut=0;
- _params[0]= varOutLong;
- _params[1].vt= VT_BYREF | VT_I4;
- V_I4REF(& _params[1])= &longOut2;
- hr= oletest.InvokeN( static_cast<LPCOLESTR>(L"testout_methodMulParams1"), (VARIANT*)&_params, 2);
- OutputDebugString(_T("testout_methodMulParams1 | out values: \n"));
- printVariant( _params[1]);
- printVariant( _params[0]);
-
- OutputDebugString(_T("testout_methodMulParams2 ( 3 out Parameter) \n"));
- CComVariant _params2[3];
- _params2[2]= varOutLong;
- _params2[1].vt= VT_BYREF | VT_I4;
- V_I4REF(& _params2[1])= &longOut2;
- _params2[0]= varOutString;
- hr= oletest.InvokeN( static_cast<LPCOLESTR>( L"testout_methodMulParams2"), (VARIANT*)&_params2, 3);
- OutputDebugString(_T("testout_methodMulParams2 | out values: \n"));
- printVariant( _params2[2]);
- printVariant( _params2[1]);
- printVariant( _params2[0]);
-
- OutputDebugString(_T("testout_methodMulParams3 ( 1 in and 1 out Parameter) \n"));
- CComVariant _params3[2];
- _params3[1]= CComBSTR(L" In string");
- _params3[0]= varOutString;
- hr= oletest.InvokeN( static_cast<LPCOLESTR>( L"testout_methodMulParams3"), (VARIANT*)&_params3, 2);
- OutputDebugString(_T("testout_methodMulParams3 | out values: \n"));
- printVariant( _params3[1]);
- printVariant( _params3[0]);
-
- //In Out Parameter ###########################################################################
- OutputDebugString( _T("In Out parameter ###########################################\n\n"));
-
- *V_I1REF(&varOutByte)= 5;
- ATLTRACE(_T("testinout_methodByte | in value: %d \n"), *V_I1REF(&varOutByte));
- hr= oletest.InvokeN(static_cast<LPCOLESTR>(L"testinout_methodByte"), &varOutByte, 1, &varRet);
- OutputDebugString(_T("testinout_methodByte | out value: \n"));
- printVariant( varOutByte);
-
- OutputDebugString(_T("testinout_methodShort | in value= 1000 \n"));
- *V_UI2REF(&varOutShort)= 1000;
- hr= oletest.Invoke1(static_cast<LPCOLESTR>(L"testinout_methodShort"), &varOutShort, &varRet);
- OutputDebugString(_T("testinout_methodShort | out value: \n"));
- printVariant( varOutShort);
-
- OutputDebugString(_T("testinout_methodLong | in value= 10000 \n"));
- *V_UI4REF(&varOutLong)= 10000;
- hr= oletest.Invoke1(static_cast<LPCOLESTR>(L"testinout_methodLong"), &varOutLong, &varRet);
- OutputDebugString(_T("testinout_methodLong | out value: \n"));
- printVariant( varOutLong);
-
- *V_R8REF(&varOutDouble)= 3.14;
- ATLTRACE(_T("testinou_methodDouble in value: %f \n"),*V_R8REF(&varOutDouble));
- hr= oletest.Invoke1(static_cast<LPCOLESTR>(L"testinout_methodDouble"), &varOutDouble, &varRet);
- OutputDebugString(_T("testinout_methodDouble | out value: \n"));
- printVariant( varOutDouble);
-
- SysFreeString( *V_BSTRREF(&varOutString));
- *V_BSTRREF(&varOutString)= SysAllocString( L"this is a in string");
- ATLTRACE(_T("testinout_methodString | value: %s \n"), W2T(*V_BSTRREF(&varOutString)));
- hr= oletest.Invoke1(static_cast<LPCOLESTR>(L"testinout_methodString"), &varOutString, &varRet);
- OutputDebugString(_T("testinout_methodString | out value: \n"));
- printVariant( varOutString);
-
- CComVariant var1(CComBSTR(L" this is a string in a VARIANT"));
- CComVariant outVar1;
- outVar1.vt= VT_BYREF | VT_VARIANT;
- outVar1.pvarVal= &var1;
- ATLTRACE(_T("testinout_methodAny | parameter: %s\n"), W2T(var1.bstrVal));
- hr= oletest.Invoke1(static_cast<LPCOLESTR>(L"testinout_methodAny"), &varOutAny, &varRet);
- OutputDebugString(_T("testinout_methodAny | out value: \n"));
- printVariant( varOutAny);
-
- CComPtr< IUnknown > objectIn = unk1;
- CComVariant varOutIFace;
- varOutIFace.vt= VT_BYREF | VT_UNKNOWN;
- varOutIFace.ppunkVal= &objectIn.p;
- (*varOutIFace.ppunkVal)->AddRef();
- OutputDebugString(_T("testinout_methodXInterface | in value: \n"));
- printVariant(varOutIFace);
- hr= oletest.Invoke1(static_cast<LPCOLESTR>(L"testinout_methodXInterface"), &varOutIFace, &varRet);
- OutputDebugString(_T("testinout_methodXInterface | out value: \n"));
- printVariant( varOutIFace);
-
- // Properties ######################################################################
- OutputDebugString( _T(" Properties ###########################################\n\n"));
-
- OutputDebugString(_T("set property \"AttrByte\" | value"));
- //CComVariant propArByte;
- //propArByte.vt= VT_ARRAY | VT_I1;
- varParam1.parray= (SAFEARRAY*)arByte;
- printVariant( varParam1);
- hr= oletest.PutPropertyByName( static_cast<LPCOLESTR>(L"AttrByte"), &varParam1);
- OutputDebugString(_T("get property \"AttrByte\" | value:"));
- varRet.Clear();
- hr= oletest.GetPropertyByName( static_cast<LPCOLESTR>(L"AttrByte"), &varRet);
- printVariant( varRet);
-
-
- return S_OK;
-
-
-}
-
-
-void printVariant( VARIANT & _var)
-{
- HRESULT hr;
- USES_CONVERSION;
- CComVariant var;
- hr= VariantCopyInd( &var, &_var);
- if( var.vt & VT_ARRAY)
- {
- VARTYPE type= var.vt ^ VT_ARRAY;
- SAFEARRAY * sarray= var.parray;
- long lbound;
- long ubound;
- hr= SafeArrayGetLBound( sarray, 1, &lbound);
- hr= SafeArrayGetUBound( sarray, 1, &ubound);
- long count= ubound - lbound + 1;
- char charValue;
- BYTE byteValue;
- short shortValue;
- long longValue;
- double doubleValue;
- IUnknown* unkValue;
- BSTR bstrValue;
- OutputDebugString( _T("# Array \n"));
- for( long i= 0; i < count; i++)
- {
-// CComVariant variantValue;
- TCHAR *buf[256];
- wsprintf( (TCHAR*)buf, _T("%d : "), i);
- OutputDebugString( (TCHAR*)buf);
- VARIANT varTemp;
- VariantInit( &varTemp);
- VARIANT variantValue;
- VariantInit( &variantValue);
- switch( type)
- {
- case VT_UI1:
- hr= SafeArrayGetElement( sarray, &i, &byteValue);
- varTemp.vt= VT_UI1;
- V_UI1( &varTemp)= byteValue;
- printVariant( varTemp);
- break;
- case VT_I1:
- hr= SafeArrayGetElement( sarray, &i, &charValue);
- varTemp.vt= VT_I1;
- V_I1( &varTemp)= charValue;
- printVariant( varTemp);
- break;
- case VT_I2:
- hr= SafeArrayGetElement( sarray, &i, &shortValue);
- varTemp.vt= VT_I2;
- V_I2( &varTemp)= shortValue;
- printVariant( varTemp);
- break;
-
- case VT_UI2:
- case VT_I4:
- hr= SafeArrayGetElement( sarray, &i, &longValue);
- varTemp.vt= VT_I4;
- V_I4( &varTemp)= longValue;
- printVariant( varTemp);
- break;
- case VT_R8:
- hr= SafeArrayGetElement( sarray, &i, &doubleValue);
- varTemp.vt= VT_R8;
- V_R8( &varTemp)= doubleValue;
- printVariant( varTemp);
- break;
- case VT_BSTR:
- hr= SafeArrayGetElement( sarray, &i, &bstrValue);
- varTemp.vt= VT_BSTR;
- varTemp.bstrVal= bstrValue;
- printVariant( varTemp);
- break;
- case VT_VARIANT:
- hr= SafeArrayGetElement( sarray, &i, &varTemp);
- printVariant( varTemp);
- break;
-
- case VT_UNKNOWN:
- hr= SafeArrayGetElement( sarray, &i, &unkValue);
- varTemp.vt= VT_UNKNOWN;
- varTemp.punkVal= unkValue;
- printVariant( varTemp);
- break;
- }
-
- VariantClear( &varTemp);
- VariantClear( &variantValue);
- }
-
- }
- else
- {
- TCHAR buf[256];
- switch (var.vt)
- {
- case VT_I1: wsprintf( (TCHAR*)buf, _T(" VT_I1: %d \n"), V_I1( &var) );
- break;
- case VT_UI1: wsprintf( (TCHAR*)buf, _T(" VT_UI1: %d \n"), V_I1( &var) );
- break;
-
- case VT_I2: wsprintf( (TCHAR*)buf, _T(" VT_I2: %d \n"), V_I2( &var) );
- break;
- case VT_I4: wsprintf( (TCHAR*)buf, _T(" VT_I4: %d \n"), V_I4( &var) );
- break;
- case VT_R8:
- {
-
-// int decimal, sign;
-// char *buffer;
-// int precision = 14;
-// double source = 3.1415926535;
-
-// buffer = _ecvt( V_R8(&var), precision, &decimal, &sign );
- sprintf( (TCHAR*)buf, _T(" VT_R8: %f \n"),V_R8( &var) );
- break;
- }
- case VT_UNKNOWN:
- // The object implement IFont
- {
- CComDispatchDriver disp( var.punkVal);
- CComVariant ret;
- hr= disp.GetPropertyByName( static_cast<LPCOLESTR>(L"Name"), &ret);
- wsprintf( (TCHAR*)buf, _T(" VT_UNKNOWN: property \"Name\": %s \n"), W2T(ret.bstrVal));
- break;
- }
- case VT_DISPATCH:
- // The object implement IFont
- {
- CComDispatchDriver disp( var.punkVal);
- CComVariant ret;
- if( SUCCEEDED( hr= disp.GetPropertyByName( static_cast<LPCOLESTR>(L"Name"), &ret)))
- wsprintf( (TCHAR*)buf, _T(" VT_DISPATCH: property \"Name\": %s \n"), W2T(ret.bstrVal));
- else
- wsprintf( (TCHAR*)buf, _T(" VT_DISPATCH \n"));
-
- break;
- }
-
-
- case VT_BSTR:
- {
- TCHAR* str= W2T( var.bstrVal);
- wsprintf( (TCHAR*)buf, _T(" VT_BSTR: %s \n"), str);
- }
- break;
- default:
- wsprintf( (TCHAR*)buf, _T("\n"));
-
- }
-
- OutputDebugString( (TCHAR*) buf);
- }
-
- return;
-
-}
-
-/* vim:set shiftwidth=4 softtabstop=4 expandtab: */