VB6-将MSHFlexGrid作为参数传递给类模块函数,Windows 8.1+;

VB6-将MSHFlexGrid作为参数传递给类模块函数,Windows 8.1+;,vb6,Vb6,我在DLL中有一个公共类方法,它接受变量形式的MSHFlexGrid参数 Public Sub PrintReport(ByVal gridToPrint as Variant) 我将参数指定为variant,以避免编译错误: “私有对象模块不能在公共对象模块中用作 公共过程的参数或返回类型,如公共数据 成员,或作为公共用户定义类型的字段“ 我的主应用程序实例化这个类的一个实例,并调用PrintReport方法,传入一个MSHFlexGrid Dim clsPrint As PrintProj

我在DLL中有一个公共类方法,它接受变量形式的MSHFlexGrid参数

Public Sub PrintReport(ByVal gridToPrint as Variant)
我将参数指定为variant,以避免编译错误:

“私有对象模块不能在公共对象模块中用作 公共过程的参数或返回类型,如公共数据 成员,或作为公共用户定义类型的字段“

我的主应用程序实例化这个类的一个实例,并调用PrintReport方法,传入一个MSHFlexGrid

Dim clsPrint As PrintProject.clsPrint
Set clsPrint = New PrintProject.clsPrint
clsPrint.PrintReport gridToPrint
其中gridToPrint是我表单上MSHFlexGrid控件的名称

在Windows8.1问世之前,这种逻辑已经运行了多年

Windows 8.1和Windows 10在调用PrintReport方法时生成类型不匹配错误

还有其他人经历过这种行为吗

我本以为这是一个环境问题,但在所有运行Windows 8.1或Windows 10的安装上都会出现这种情况,而Windows 8和更低版本的运行情况良好

如果我没有正确地组织我的问题,请原谅我的无知。第一次海报,长期用户


提前谢谢

也许您使用的将网格作为变体传递的技巧不再有效。似乎这在任何版本的Windows上都不应该起作用。也许现在就尝试解决原始错误(这本身就够糟糕的了)。DLL应该有一个对MSHFLXGD.OCX的引用集,这将允许适当的早期绑定参数。使用变体有点奇怪(Object在这里更有意义),但两者都可以工作。看起来你有部署缺陷的可能性比其他任何缺陷都大,不过,我在Windows8.1或10中没有看到任何会有这种影响的东西。这似乎更可能是“在我的机器上工作”的情况。我会尝试将网格作为对象类型传递。