w632541910 发表于 2015-8-29 11:40:00

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);
请教以上问题如何解决?

Alice 发表于 2015-8-31 17:22:00

回复 1楼w632541910的帖子

很抱歉给你带来的使用上的不便。
你的问题我们收到了,为了帮助你解决问题,请问你使用的C1Chart Com的版本是什么?

w632541910 发表于 2015-9-7 10:58:00

版本是C1Chart2D 8.0

Alice 发表于 2015-9-7 14:08:00

回复 3楼w632541910的帖子

谢谢反馈。
根据猜测,建议首先重新为数组分配存储空间,然后检查结果。
由于问题不是出在一个简单的应用中,如果依然有问题,请将检查的结果反馈给我们,并且提供一个我们可以用来调查研究的Demo。

w632541910 发表于 2015-9-15 16:13:00

请问你们那里有没有在VC++中使用CopyYArrayIn()函数的实例啊,有的话发一份给我,谢谢!

Alice 发表于 2015-9-15 17:46:00

回复 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

w632541910 发表于 2015-9-15 19:39:00

好的,我试一下

Alice 发表于 2015-9-16 09:01:00

回复 7楼w632541910的帖子

谢谢反馈。

Alice 发表于 2015-9-25 17:53:00

回复 7楼w632541910的帖子

问题解决如何了?
为了给你提供更优质的服务,请对本次服务进行评分。我们会认真对待你提出的宝贵意见,谢谢   
   http://gcdn.gcpowertools.com.cn/attachment.aspx?attachmentid=10062

w632541910 发表于 2015-9-28 16:55:00

直接传递二维数组还是不行,换了另外一种策略进行批量更新了
页: [1] 2
查看完整版本: VC++平台下chart控件中的CopyYArrayIn用法