В ActiveX разбираюсь слабо, поэтому помогите:
есть элемент ActiveX
в нем метод
STDMETHODIMP Test::GetImage()
{
HRESULT hr;
try {
if(m_pWC)
{
VARIANT lpCurrImage;
VariantInit(&lpCurrImage);
lpCurrImage.vt = VT_BYREF | VT_UI1;
if( SUCCEEDED(hr = m_pWC->GetCurrentImage(&lpCurrImage.pbVal)) )
{
HRTEST( "Get Current Image", NULL, lpCurrImage);//?
// можно ли так: return lpCurrImage;//?
}
}
}
catch( _com_error& com_err ) {
return SetErrorAddDescr( com_err, "::GetImage" );}
return S_OK;
}
метод интерфейса:
VARIANT Test::GetImage()
{
VARIANT result;
InvokeHelper(0xd, DISPATCH_PROPERTYGET, VT_VARIANT, (void*)&result, NULL);
return result;
}
error C2664: 'hr_test' : cannot convert parameter 2 from 'struct tagVARIANT *' to 'long'
подскажите как происходит передача значений из первого метода в метод интерфейса??? Т.е. мне нужно чтобы метод интерфейса возвращал знанение lpCurrImage.
+ еще не понятно: у меня переменная lpCurrImage вообще-то типа BYTE* но его кажется в InvokeHelper нельзя передавать ? Походу надо передавать типа VARIANT. Но почему тогда в ошибке требуется long?
добавлена раскраска — Кодт
07.12.08 03:30: Перенесено модератором из 'C/C++. Прикладные вопросы' — Кодт