float x, y, z;
VARIANT Point;
VariantInit( &Point );
Point.vt = VT_ARRAY;
// m_pEngine is some kind of COM-object
HRESULT res2 = m_pEngine->get_TouchPoint( &Point );
char cx[5] = {'\0'};
char cy[5] = {'\0'};
char cz[5] = {'\0'};
tagSAFEARRAY *pArr = Point.parray;
float *f = (float*)pArr->pvData;
f++;
x = *f;
sprintf( cx, "%.3f", *f );
f++; f++;
z = *f;
sprintf( cz, "%.3f", *f );
f++; f++; f++;
y = *f;
sprintf( cy, "%.3f", *f );
// Already breaked...