如何将字节数组从c#传递给MFC ActiveX

时间:2014-04-04 06:58:17

标签: c# mfc activex marshalling

我正在编写简单的c#app。

这很简单。 c#app以字节数组作为参数调用activeX函数,然后, activeX接收字节数组并显示它。

我问,我必须在MFC ActiveX中使用哪种数据类型?变异?变体*?

任何帮助将不胜感激。感谢。

1 个答案:

答案 0 :(得分:0)

VARIANT类型VT_ARRAY|VT_UI1。代码示例:

char original_buffer[1024];
SAFEARRAY FAR* psa;
SAFEARRAYBOUND rgsabound[1];

// fill original_buffer here

rgsabound[0].lLbound = 0;
rgsabound[0].cElements = 1024;
psa = SafeArrayCreate(VT_UI1, 1, rgsabound);
void* p=(char*)psa->pvData;

if (psa)
{                   
    VARIANT variant_buffer;
    VariantInit(&variant_buffer); 
    variant_buffer.vt = VT_ARRAY|VT_UI1;
    variant_buffer.parray = psa;

    void* p = (char*)psa->pvData; 
    memcpy(p, (void*)original_buffer, 1024); 

    // do someting with the array here

    SafeArrayDestroy(psa);
}