助けを求めます:ocxコントロールの中のvariantタイプはどのようにjsで値を割り当てます
4857 ワード
昨日から絵のocxコントロールを作り、ホームページで呼び出し、javascriptで値をつけました.コントロールの1つのグラフィックメソッドAddNewStream()を呼び出すと、どのように試しても「タイプが一致しない」というエラーがあります.コントロールはC++で書かれています.
これは方法です.
これはAddNewStreamメソッドを呼び出す例です.
[b]
私自身はC++を理解していません.私が今直面している問題は、この方法の最後のパラメータがVARIANTタイプであることです.私はどのようにjavascriptでこのocxコントロールのこの方法に値を付与しますか?[/b]
皆さん、教えてください.
これは方法です.
void AddNewStream(short stream_seqid, short stream_showflag, unsigned long stream_color, LPCTSTR stream_name, LPCTSTR stream_unit, double stream_scale, LPCTSTR stream_remark, short m_nPenStyle, short m_nPenWidth, short m_nNumValidDataRT, VARIANT * m_dValueRT)
{
static BYTE parms[] = VTS_I2 VTS_I2 VTS_UI4 VTS_BSTR VTS_BSTR VTS_R8 VTS_BSTR VTS_I2 VTS_I2 VTS_I2 VTS_PVARIANT ;
InvokeHelper(0x3, DISPATCH_METHOD, VT_EMPTY, NULL, parms, stream_seqid, stream_showflag, stream_color, stream_name, stream_unit, stream_scale, stream_remark, m_nPenStyle, m_nPenWidth, m_nNumValidDataRT, m_dValueRT);
}
これはAddNewStreamメソッドを呼び出す例です.
static int bbb=0;
bbb++;
VARIANT var;
VariantInit(&var);
SAFEARRAYBOUND rgsabound[2];
m_vvvv.ClearAllStream();
m_vvvv.SetHorizontalTimeUnit(5," "); // ,0 、1 、
m_vvvv.SetHorizontalX2Time(1); // :1 、0
m_vvvv.Set_ChartType(0);// :1 ;0
int nLength = 10;
rgsabound[0].lLbound=0;
rgsabound[1].lLbound=0;
rgsabound[0].cElements=nLength;
rgsabound[1].cElements=2;
var.vt=VT_R8|VT_ARRAY;
var.parray=SafeArrayCreate(VT_R8,2,rgsabound);
long index[2];
double data;
index[0]=0;
index[1]=0;
data=132.184906; //
SafeArrayPutElement(var.parray, index, &data);
index[0]=0;
index[1]=1;
data=12*60*60+10; //
SafeArrayPutElement(var.parray, index, &data);
index[0]=1;
index[1]=0;
data=132.337234; //
SafeArrayPutElement(var.parray, index, &data);
index[0]=1;
index[1]=1;
data=12*60*60+30; //
SafeArrayPutElement(var.parray, index, &data);
index[0]=2;
index[1]=0;
data=132.003876; //
SafeArrayPutElement(var.parray, index, &data);
index[0]=2;
index[1]=1;
data=12*60*60+40; //
SafeArrayPutElement(var.parray, index, &data);
index[0]=3;
index[1]=0;
data=132.221054; //
SafeArrayPutElement(var.parray, index, &data);
index[0]=3;
index[1]=1;
data=14*60*60+10; //
SafeArrayPutElement(var.parray, index, &data);
index[0]=4;
index[1]=0;
data=132.383438; //
SafeArrayPutElement(var.parray, index, &data);
index[0]=4;
index[1]=1;
data=14*60*60+30; //
SafeArrayPutElement(var.parray, index, &data);
index[0]=5;
index[1]=0;
data=131.439148; //
SafeArrayPutElement(var.parray, index, &data);
index[0]=5;
index[1]=1;
data=15*60*60+20; //
SafeArrayPutElement(var.parray, index, &data);
index[0]=6;
index[1]=0;
data=131.950562; //
SafeArrayPutElement(var.parray, index, &data);
index[0]=6;
index[1]=1;
data=15*60*60+30; //
SafeArrayPutElement(var.parray, index, &data);
index[0]=7;
index[1]=0;
data=132.065659; //
SafeArrayPutElement(var.parray, index, &data);
index[0]=7;
index[1]=1;
data=15*60*60+50; //
SafeArrayPutElement(var.parray, index, &data);
index[0]=8;
index[1]=0;
data=132.047348; //
SafeArrayPutElement(var.parray, index, &data);
index[0]=8;
index[1]=1;
data=17*60*60+20; //
SafeArrayPutElement(var.parray, index, &data);
index[0]=9;
index[1]=0;
data=132.123352; //
SafeArrayPutElement(var.parray, index, &data);
index[0]=9;
index[1]=1;
data=18*60*60+30; //
SafeArrayPutElement(var.parray, index, &data);
m_vvvv.AddNewStream(bbb,true,RGB(100+bbb*20,200-bbb*30,30*bbb*50),"GaoXingAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAXXXXXXXXXXXXXXXX","GaoXing",bbb,"GaoXing",1,1,10,&var); //
::SafeArrayDestroyData(var.parray);
::VariantClear(&var);
[b]
私自身はC++を理解していません.私が今直面している問題は、この方法の最後のパラメータがVARIANTタイプであることです.私はどのようにjavascriptでこのocxコントロールのこの方法に値を付与しますか?[/b]
皆さん、教えてください.