如何通过Ref从VB.NET传递到VB6 OCX?

时间:2010-08-31 06:44:36

标签: vb.net vb6

我需要将2个字符串从VB.NET传递给为VB6编写的OCX。 VS2008在OCX上放置了一个包装器,但是在调用例程时,没有正确接收字符串参数。

我不知道为什么,但我猜这是因为,据我所知,在VB6中参数传递By Ref作为默认值,而在VB.NET中,参数传递给Bv Val作为默认值。

当我将OCX导入VS 2008时,似乎已经自动默认了我需要的例程的字符串参数By Val,因为ocx导出信息没有指定任何内容。

  1. 是否有覆盖VS 2008以便我可以正确地将字符串传递给OCX?

  2. 我还能做些别的事吗?

  3. 我有使用JSE的FastEncrypt加密的30000个文件,这似乎已经停止了,我需要将FastEncrypt合并到VB.NET程序中才能使用它们。

    非常感谢任何帮助。

    谢谢。

1 个答案:

答案 0 :(得分:0)

Microsoft将参数的默认行为从VB6更改为VB.NET。在VB6中,默认(如果未指定)是ByRef,在.NET中,默认值(如果未指定)是ByVal。

您当然可以覆盖默认行为并在任一语言中指定ByRef或ByVal,因此如果您将某些代码从VB6移植到.NET(如果它显示为

Public Function Foo(blnOption as Boolean) as Boolean

VB.NET中的等价物是

Public Function Foo(ByRef blnOption as Boolean) as Boolean

。作为一种好的做法,我总是明确地指定它,以便任何阅读代码的人都知道并且它使迁移代码更容易,因为您不必记住设置它。