当前位置:编程学习 > VB >>

vb引用vb封装的Active DLL为何会没有公共模块中的函数?

用vb制作active dll,dll中有一个类模块,一个公共模块。
其中类模块代码:
Private Sub Class_Initialize()
    Debug.Print "Initialize Thing "
End Sub

Private Sub Class_Terminate()
    Debug.Print "Terminate Thing "
End Sub
......
公共模块中代码:
Public a As Long

Public Function inc() As Long
    a = 0
    inc = a + 1
End Function
    然后生成dll,再另外启动vb标准窗体程序,引用生成的这个dll,结果在对象浏览器中并没有发现Module标准模块中的inc函数,只能看到Class类模块及其成员。
    接着参考网上的添加active dll中输出函数的方法结果也是一样,难道一定要用vc或其它工具来制作
com组件才能实现这样的功能吗?
    --------------------编程问答-------------------- 你要弄一个public class然后把public function写在public class里面 --------------------编程问答-------------------- VB中,使用activeexe,activexdll,ocx控件,封装后,只能存在于类模块中,被定义为public的属性方法过程,而定义在basmodule中的任何变量或方法在类用户中都是不可见的,如果过程方法希望在类用户可见,则需要将该方法定义到类模块中 --------------------编程问答-------------------- 哪楼上所说,然后可以把这个类模块的Instancing属性定义成GlobalMultiUse,实现类似你要的公共模块的效果 --------------------编程问答-------------------- 估计楼主没看MSDN的习惯,MSDN上有现成的例子。
编写ActiveXDLL程序一定要先看MSDN,这样你编写的程序才会高效。  --------------------编程问答-------------------- 这就是面向对象。

面向对象三原则之首就是“封装”,所有非公共接口的函数都不应该暴露给调用者。 --------------------编程问答--------------------    首先感谢各位老大的回帖,关于这一块MSDN上也没有详细说明,本人也是在做多线程开发的时候,在引用第三方控件的dll(如ThreadFactory)中可以看到Module中的函数,而ThreadFactory的dll好像是用C++和汇编所写的com组件,感觉如果将常用的API函数或其它个人编写的函数封装到Dll的Module模块中会方便很多,有些代码就不需要重复Key了。
    --------------------编程问答-------------------- 封装到类中吧。
标准模块是公共的,大家都可以用,包括类模块也可使用标准模块。没有封装标准模块这个说法。标准模块中的全局函数要通过类模块才能调用。
补充:VB ,  COM/DCOM/COM+
CopyRight © 2022 站长资源库 编程知识问答 zzzyk.com All Rights Reserved
部分文章来自网络,