易截截图软件、单文件、免安装、纯绿色、仅160KB

VC写的一个COM,VB来调用,参数传递有问题

我的VC OCX中有 一个接口,这个接口有一个参数是需要返回一个内存文件的,很大,大概有2M左右,现在我想通过VB调用这个接口把这个文件 传递出来,,先是声名接口参数类型为BSTR*,好不容易搞定了,但是传递出来的数据不对,个人感觉他是吧这个2进制的文件流转换成UNICODE了,但是我用VB的STRCONV转换不过来,后来又用VARIANT类型的,但是连内存都不让操作了


1.如何让OCX中传递出来的参数是正确的2进制流,而不是经过unicode转换过来的
2.到底该使用声名数据类型的参数
BSTR*不行,遇到0会截断
用 IStream 接口

引用
BSTR*不行,遇到0会截断
用 IStream 接口

up

我用的memcpy,截断不截断对我没有影响啊,我刚才用VC测试了一下,没有上述unicode转换的问题,难道VB就这么垃圾???

引用
我用的memcpy,截断不截断对我没有影响啊,我刚才用VC测试了一下,没有上述unicode转换的问题,难道VB就这么垃圾???

问题出在你的接口参数类型,即使你使用了memcpy也一样。

楼上你没有看明白我的意思吧,我用VC已经测试通过了

使用bstr的话,会自动转成unicode的,要么base64一下
或者用VARIANT的SafeArray


base64?在VC里头还是VB里头啊 安全数组这么用啊,能不能具体点,因为ocx的接口参数也就那些,好像没有什么安全数组的类型吧?

base64 编码把二进制转成字符串
VARIANT里的数组在vc时通过safearray使用的,vb怎么用我也不知道,呵呵

vc的safearray操作
long ReviewDocument::getMeasureBinData(VARIANT* aData)
{


相关问答:

VB中有无TApplication对应类型

我用Delphi写了一个DLL, DLL里有MDI的子窗体,DLL初始化时 传递调用者的TApplication给DLL, 在Delphi7中调用已经通过,但是不知道在VB中有无TApplication对应类型, 是否能在VB中调用?
你好,用instance不是就可以了&# ......

从VB转行VB.NET~~~开始的时候如何学基础入门啊~

VB偶学得不错,现在大一,高三的时候就学VB了,现在学校里都是学C#和VB.NET的兄弟多。。。
偶要转行VB.NET了~当年学VB学了2年,对VB里面的常用函数都十分了解。
Select、If结构、For Next循环、等都了解。。。 ......

vb修改DTPicker1日期问题

Private Sub Check1_Click()
If Check1.Value = 1 Then
DTP1.Enabled = True
Else
DTP1.Enabled = False
End If
End Sub
Private Sub Check2_Click()
If Check2.Value = 1 Then
DTP2.Enabled = True
Else ......

熟悉VB的进来,有项目


有没有杭州的朋友,熟悉VB的,有兴趣做的话留下联系方式
VB6 OR VB.NET?
可惜不在杭州,遠程可否?

兄台联系方式呢

我也联系一下,不过在宁波

可惜我也不在杭州

北京的行不?

我在苏州, ......
© 2009 ej38.com All Rights Reserved. 关于E健网联系我们 | 站点地图 | 赣ICP备09004571号