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

avctivex 控件 接口返回值有关问题

2012-02-13 
avctivex 控件 接口返回值问题最近在做把普通接口封装为ActiveX控件。以控件的形式对外暴露接口。有一个产生

avctivex 控件 接口返回值问题
最近在做把普通接口封装为ActiveX控件。以控件的形式对外暴露接口。

有一个产生随机数的普通接口是这样的:
  DWORD GetRandom(
IN HANDLE hKey,
  IN DWORD randomStrLen,
OUT LPBYTE lpRandomStr
  );

 在控件内部利用类向导建一个对应的方法是这样的


BSTR GetRandom(short randomStrLen) 
{
CString strResult;

DWORD rv;
HANDLE Keyhandle;

Keyhandle=(HANDLE)m_handle;

  DWORD randomLen=(DWORD)randomStrLen;


  LPBYTE outData=(LPBYTE)malloc(randomStrLen);
  memset(outData,0,randomStrLen);
  
  rv=Usb_GenRandom(
Keyhandle,
randomLen,
outData
);

  /*****************************************************

  这里outData 是LPBYTE 类型的。

  这个定义的接口返回值是BSTR类型(类向导里面提供的返回值类型只有BSTR,没有LPBYTE)
   
  我是这样做的类型转换:

  strResult = outData;
  或者 CString strResult(outData);

  但是上面两种转换得到的返回值都是乱码,

  那我该怎么做类型转换,才能正确的返回产生的随机数????

  *****************************************************/
 
  free(outData);
  outData=NULL;

  return strResult.AllocSysString();
   
}

  大家帮忙看看。。。。!

[解决办法]
使用CComBSTR

热点排行