ocx要接收BYTE数组数据, 用什么类型比较好? BSTR好像只能处理字符串, BYTE数组中的值取值范围0~255;用VARIANT好像杀鸡用牛刀;(注:ocx是给任意语言使用的) 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 BSTR(1).BSTR bstr = SysAllocStringByteLen((char*)buf, 1024);(2).memcpy(buf, (LPVOID)bstr, 1024); to zhoujianhei:那样行好像太行吧?原因:我的控件是接收, 在控件接口中定义如此:[id(4)] long Login(BSTR LoginName, BSTR Passwd);而在CXXXCtrl中,VC生成的代码却是: long CXXXCtrl::Login(LPCTSTR LoginName, LPCTSTR Passwd);这样, 我根本不知道Passwd的长度(Passwd是经过加密的, 不是字符串)to akirya:SafeArray好像一定要封装到VARIANT中才行吧? 使用MFC?要是ATL的话实际代码中就是BSTRmfc没用过,看你的情况应该是mfc库里面转化了刚才找了一下SafeArray的确得在VARIANT 1楼方案可行。BSTR的处理跟普通字符串处理是不同的,在BSTR指向的内存中有一个4字节的前缀(正好在BSTR之前)表示这个BSTR的长度,系统处理BSTR根本不看内容中是否有空结束符,而是用这个长度值,所以在BSTR中能存放任意二进制数据。 谢谢各位, 问题以比较明朗了:1楼方案可行;至于VC在CXXXCtrl中,VC生成的代码却是: long CXXXCtrl::Login(LPCTSTR LoginName, LPCTSTR Passwd); jameshooo兄, 以在另一帖回复我了, 可以将LoginName强制转换为BSTR, 并利用API可以获得BSTR的长度;再次谢谢各位仁兄了! 有关属性页的动态增减的问题,急 求一个VC++毕业设计的题目!!! 怎样得到整个视图的大小? 灰化后的图标只有灰色,没有里面的图形了 大家觉得考同济大学的软件工程硕士(在职)怎么样? 数据结构问题? 在VS2010的几个窗口中文件的对应关系 高分求TXT文件解密软件,谢谢! 原本要从磁盘文件里读,如何让它从资源时读? vc中如何访问oracle数据库 一个简单的问题 不知如何干 请高手帮忙 如何取得文件夹的访问权限?
(1).
BSTR bstr = SysAllocStringByteLen((char*)buf, 1024);(2).
memcpy(buf, (LPVOID)bstr, 1024);
那样行好像太行吧?
原因:
我的控件是接收,
在控件接口中定义如此:[id(4)] long Login(BSTR LoginName, BSTR Passwd);
而在CXXXCtrl中,VC生成的代码却是: long CXXXCtrl::Login(LPCTSTR LoginName, LPCTSTR Passwd);
这样, 我根本不知道Passwd的长度(Passwd是经过加密的, 不是字符串)to akirya:
SafeArray好像一定要封装到VARIANT中才行吧?
要是ATL的话实际代码中就是BSTR
mfc没用过,看你的情况应该是mfc库里面转化了
刚才找了一下SafeArray的确得在VARIANT
BSTR的处理跟普通字符串处理是不同的,在BSTR指向的内存中有一个4字节的前缀(正好在BSTR之前)表示这个BSTR的长度,系统处理BSTR根本不看内容中是否有空结束符,而是用这个长度值,所以在BSTR中能存放任意二进制数据。
1楼方案可行;至于VC在CXXXCtrl中,VC生成的代码却是: long CXXXCtrl::Login(LPCTSTR LoginName, LPCTSTR Passwd);
jameshooo兄, 以在另一帖回复我了, 可以将LoginName强制转换为BSTR, 并利用API可以获得BSTR的长度;再次谢谢各位仁兄了!