在你的DLL里面建公用类!!!
解决方案 »
- 如何在vb报表设计器中显示两列数据?
- 有关vb中的 ":=" 问题!
- 如何让MSFlexGrid中的内容根据不同的结果显示不同的色彩
- 请教一个思路?
- 一个郁闷的问题?????学习COM+却没有练习的机会, 怎么办???
- 想做一个钟表的外形,做出来时椭圆的。请高手帮看哈代码,并修改哈
- 关于richedit!!
- 浏览网页(使用系统默认安全属性,它可以修改我机器上的哪些东东?)
- 高手快来!
- 求助,关于打开数据库(急件)。
- 哪位大侠能告诉我有关于ado 2.5资料的网站,
- 我在资源管理器中删除了Sql Server数据库xx.mdf 与 xx.log。想再在Enterprise Manager 中Delete该库信息,但提示出错!该怎办?
ActiveX dll 好像是不可能带什么个窗体的。
ActiveX dll 好像是不可能带什么个窗体的。
现在我想的是这样:(举个例子)
我在类里添加一个窗体做虚拟键盘,这个键盘可以输出英文和中文,中文是在这个键盘创体重生成。字母和汉字动态的传到外面。这个键盘将被多处应用,故将它放在DLL中,现在我想的是:当键盘中的安键被请下时,在调用这个DLL的窗体中怎么及时了解这个事件,并接受信息?
Code:'ActveX Dll -> 工程1 -> Class1:
Dim WithEvents FormObj As VB.Form
Public Sub SetFormMethod(FormX As Object)
Set FormObj = FormX
End Sub
Private Sub FormObj_DblClick()
MsgBox "I am in ActiveX DLL"
End Sub
Public Property Set FormProperty(ByVal vNewValue As Object)
Set FormObj = vNewValue
End Property'Stanard Exe -> 工程2 -> Form1:
Dim x As New 工程2.Class1
Private Sub Form_Load()
x.SetFormMethod Me
Set x.FormProperty = Me
End Sub
RaiseEvent OnClick '窗体里的事件用于传递给类OnClick
End Sub
这是简单的写法,你可以在事件中传递参数,不多说然后,在DLL的类里面添加如下定义
Public Event OnClick() '类里的时间用于传递给DLL的调用者
Dim WithEvents FF As Form1 '必须定义一个基于Form1窗体类的实例,否则无法传递窗体事件为类的初始化事件添加代码,加载新的窗体,(并不显示)
Private Sub Class_Initialize()
Set FF = New Form1
End Sub
为窗体的事件编写代码,注意这里是关键
Private Sub FF_OnClick() '这是FF的事件,也就是DLL知道了窗体上按钮的按下
RaiseEvent OnClick '然后DLL通知调用者事件发生
End Sub总之你必须在窗体和DLL和调用者之间打一个桥
因为在VB里只有类向外有接口
例如
Public Sub ShowKeyBoard()
FF.Show
End Sub
你俩的方法我都来试试,谢谢先!
你的方法我实现了,再次感谢你,真是爱你一万年。
不过你那程序又一个小bug,就是 Set ff = Form1,而不是Set ff =New Form1
好了,我还要去试试playyuer的方法。
你的方法我也试过了,但和我想的不一样,你是在DLL内部响应外部窗体的事件,不过这也行了,
对我也很有启发,谢谢诸位了!!给分了!!