首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > VC/MFC >

ocx接口返回值解决办法

2013-01-23 
ocx接口返回值我这几天在学习OCX控件编写,遇到了些问题,特向您请教:1、OCX接口返回值想返回一个BYTE*类型的

ocx接口返回值
我这几天在学习OCX控件编写,遇到了些问题,特向您请教:
1、OCX接口返回值
想返回一个BYTE*类型的数据,但是在JS端调用时,得不到返回值,您帮我看一下了。
STDMETHODIMP CZNActiveXATL::BioCapture(BYTE* Birptr)
{
// TODO: 在此添加实现代码
int ret = 0;
bool beepon = true;
BYTE birptr[588];//;= (BYTE *)malloc(sizeof(BYTE)*588);
Birptr = (BYTE*)malloc(sizeof(BYTE)*588);
MessageBox(NULL, L"CAP...!", L"demo", MB_OK);
ret = this->ZN_capture(static_cast<bool>(beepon),static_cast<BYTE *>(birptr));
//测试是否已读取信息,测试结果正确
FILE *file = fopen("f:\\biodata_.txt", "wb+");
if (file != NULL) {
MessageBox(NULL, L"xinxi成功!", L"demo", MB_OK);
}
fwrite(birptr, 1,sizeof(birptr), file);
fclose(file);
MessageBox(NULL, L"CAP成功!", L"demo", MB_OK);
//将采集的信息转存至Birptr,作为函数的返回值
memcpy( Birptr,birptr ,588);
//new add 21:24
//基于BSTR*的处理:STDMETHODIMP CZNActiveXATL::BioCapture(BSTR* Birptr)
/*int ret = 0;
bool beepon = true;
BYTE birptr[588];//;= (BYTE *)malloc(sizeof(BYTE)*588);
ret = this->ZN_capture(static_cast<bool>(beepon),static_cast<BYTE *>(birptr));
int birptr_len = strlen(birptr);
char str[32];
itoa(birptr_len,str,10);//将int类型的数转换为字符串
MessageBox(NULL,(LPCTSTR)str, L"demo", MB_OK);
////////////////////////////////////////////////////////////////
memset(birptr, 0, 588);
BSTR bs = ::SysAllocString(birptr);
//_bstr_t str = (char*)birptr;
//str.GetBSTR();
//*Birptr = CComBSTR(birptr).Copy();//返回字符串 是不是操作结束之后会释放空间呢?
//BSTR bstrText = ::SysAllocString(L value);::SysAllocString(L birptr)
*/
this->_AtlFinalRelease();
return S_OK;
}
JS端:
var sum = CZNActiveXATL.BioCapture();
谢谢
[解决办法]
返回一个字符串就好了,用BSTR类型。

热点排行