[VC++ 6/Windows] ActiveX

ich versuche aus einer ActiveX einen String zurückzugeben der Code sieht so aus:
STDMETHODIMP Cactl::get_test2(BSTR *pVal)
{
// ZU ERLEDIGEN: Implementierungscode hier hinzufügen
static char tbuf[]=„Hallo“;
*pVal=SysAllocString((OLECHAR*)&tbuf);
return S_OK;
}

Als Rückgabewert im ActiveX Testcontainer bekomme ich aber nur ??o zurück bzw. immer den letzten Buchstaben des Strings als letztes Zeichen nach der ?-Kette. Wenn ich den String verlängere bekomm ich auch mehr Fragezeichen. Hat mir jemand dafür eine Erklärung ich wollte mich schon aus dem Fensterstürzen aber ich sitz im Erdgeschoß, verzweifel.

iSt

Nachtrag
Ich bekomme jetzt den String zurück durch folgende Anweisungen:
STDMETHODIMP Cactl::get_test2(BSTR *pVal)
{
char tbuf[12]= „\0\0\0\0\0\0\0\0\0\0\0“;
tbuf[0]=‚H‘;
tbuf[2]=‚a‘;
tbuf[4]=‚l‘;
tbuf[6]=‚l‘;
tbuf[8]=‚o‘;
*pVal=SysAllocString((OLECHAR*)tbuf);
return S_OK;
}

Jedoch erscheint mir dies reichlich idiotische gibt es dafür ein vorgefergtigtes casting ich vermute nämlich das dies irgenwie mit der umwandlung Ansi->Unicode zu tun hat.

Thanx im voraus
iSt