读书人

VC ActiveX控件接口函数参数传值疏失

发布时间: 2013-07-04 11:45:28 作者: rapoo

VC ActiveX控件接口函数参数传值出错
在Active控件类中,添加了一个Get/Set属性,在其中的Set函数中,代码如下:
void CMyAXCtrl::SetMyViewAngle(FLOAT* ViewAng, VARIANT newVal)
{
AFX_MANAGE_STATE(AfxGetStaticModuleState());
//代码段1
m_ViewAng[0]=ViewAng[0];
m_ViewAng[1]=ViewAng[1];
/* 代码段2
m_ViewAng[0]=newVal.pfltVal[0];
m_ViewAng[1]=newVal.pfltVal[1];*/
SetModifiedFlag();
}
然后在测试程序中,调用该函数的代码如下:
VARIANT m_ViewAnglg; VariantInit(&m_ViewAnglg);
float ViewAngle[2]; ViewAngle[0]=30.4 ;ViewAngle[1]=60.4;
m_ViewAnglg.vt=VT_R4; m_ViewAnglg.pfltVal=ViewAngle;
m_MyCtrl.put_MyViewAngle(ViewAngle,m_ViewAnglg);
问题是:使用代码段1给m_ViewAng赋值时,可以得到值,但是会在SCODE sc = m_lpDispatch->Invoke(...)报错;而使用代码段2时,newVal.pfltVal好像是空的,赋值就会报错,请问这是什么问题?该怎么解决? activex VC 控件 参数传值
[解决办法]
数组用SafeArray比较合适

读书人网 >VC/MFC

热点推荐