ocx接收BYTE数组数据

来源:互联网 发布:sql server r2 64位 编辑:程序博客网 时间:2024/05/17 02:38

BSTR
(1).
BSTR   bstr   =   SysAllocStringByteLen((char*)buf,   1024);

(2).
memcpy(buf,   (LPVOID)bstr,   1024);

 

BSTR的处理跟普通字符串处理是不同的,在BSTR指向的内存中有一个4字节的前缀(正好在BSTR之前)表示这个BSTR的长度,系统处理BSTR根本不看内容中是否有空结束符,而是用这个长度值,所以在BSTR中能存放任意二进制数据。

 

至于VC在CXXXCtrl中,VC生成的代码却是:   long   CXXXCtrl::Login(LPCTSTR   LoginName,   LPCTSTR   Passwd); 
 可以将LoginName强制转换为BSTR, 并利用API可以获得BSTR的长度;

原创粉丝点击