VC++平台下chart控件中的CopyYArrayIn用法
在VS2013、MFC平台下,使用chart控件中的chart2DData对象的CopyXVectorIn、CopyYVectorIn等方法报错“Object type mismatch”。源代码如下
VARIANT varChunk;
SAFEARRAY *psa; //使用数组整理读取的数据
SAFEARRAYBOUND rgsabound;
rgsabound.cElements = 5; //设置数组的大小
rgsabound.lLbound = 0;
psa = SafeArrayCreate(VT_R8, 1, rgsabound); //创建SafeArray数组
double *pData = new double;
for (long i = 0; i < 5;++i)
{
pData = i * 2;
::SafeArrayPutElement(psa, &i, pData + i);
}
varChunk.vt = VT_R8 | VT_ARRAY; //数组类型
varChunk.parray = psa;
m_GroupCollection = m_Chart.GetChartGroups();
m_ChartGroup = m_GroupCollection.get_Item(_variant_t(1L));
m_Data = m_ChartGroup.GetData();
m_Data.CopyYArrayIn(varChunk);
请教以上问题如何解决? 回复 1楼w632541910的帖子
很抱歉给你带来的使用上的不便。
你的问题我们收到了,为了帮助你解决问题,请问你使用的C1Chart Com的版本是什么? 版本是C1Chart2D 8.0 回复 3楼w632541910的帖子
谢谢反馈。
根据猜测,建议首先重新为数组分配存储空间,然后检查结果。
由于问题不是出在一个简单的应用中,如果依然有问题,请将检查的结果反馈给我们,并且提供一个我们可以用来调查研究的Demo。 请问你们那里有没有在VC++中使用CopyYArrayIn()函数的实例啊,有的话发一份给我,谢谢! 回复 5楼w632541910的帖子
很抱歉,没有现成的示例。
有一些基本的思路可以给你提供。
1.变量varChunk 应该传入到CopyYArrayIn()。参考:
m_Data.CopyYArrayIn(&varChunk);
这个可以参考微软的msdn:https://support.microsoft.com/en-us/kb/167668
2.如果使用的是C++而不是VB,由于COM接口是由VB设计的,需要如下。
从VFC wrapper 类复制声明,如下:
BOOL CopyXVectorIn(long Series, const VARIANT& vArray);
BOOL CopyYVectorIn(long Series, const VARIANT& vArray);
BOOL CopyYArrayIn(const VARIANT& vArray);
BOOL CopyXVectorOut(long Series, const VARIANT& vArray);
BOOL CopyYVectorOut(long Series, const VARIANT& vArray);
BOOL CopyYArrayOut(const VARIANT& vArray);
3.CopyYArrayIn()是期望2维数组,而不是一维数组。请按照如下修改:
m_Data.CopyYVectorIn(0, &varChunk);
有关这个方法的使用,可以参考文档:
http://helpcentral.componentone.com/nethelp/chart82d/#!Documents/copyyarrayinmethodch.htm 好的,我试一下 回复 7楼w632541910的帖子
谢谢反馈。 回复 7楼w632541910的帖子
问题解决如何了?
为了给你提供更优质的服务,请对本次服务进行评分。我们会认真对待你提出的宝贵意见,谢谢
http://gcdn.gcpowertools.com.cn/attachment.aspx?attachmentid=10062 直接传递二维数组还是不行,换了另外一种策略进行批量更新了
页:
[1]
2