我的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)
{
相关问答:
我用Delphi写了一个DLL, DLL里有MDI的子窗体,DLL初始化时 传递调用者的TApplication给DLL, 在Delphi7中调用已经通过,但是不知道在VB中有无TApplication对应类型, 是否能在VB中调用? 你好,用instance不是就可以了 ......
VB偶学得不错,现在大一,高三的时候就学VB了,现在学校里都是学C#和VB.NET的兄弟多。。。 偶要转行VB.NET了~当年学VB学了2年,对VB里面的常用函数都十分了解。 Select、If结构、For Next循环、等都了解。。。 ......
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的,有兴趣做的话留下联系方式 VB6 OR VB.NET? 可惜不在杭州,遠程可否? 兄台联系方式呢 我也联系一下,不过在宁波 可惜我也不在杭州 北京的行不? 我在苏州, ......