例子的来源是MSDN,很早在MSDN上面看到的,后来找不到了,这次是从MSDN中VB例程cofee例程上摘录的,原理相同,都是用active,自定义事件.
1创建一个Active Exe工程,我叫pro_comm_pro吧, 2 添加一个标注模块,Module1.bas: Public gCLS1 As cls1 '全局变量,保存对分发消息的类对象cls1的引用,以前没有定义为Public,不可以运行 3 添加类cls1.Cls 修改这个类的属性: Instancing = 2 'PublicNotCreate,不可以从外部进程创建 其他属性使用默认 4 添加如下代码到cls1.Cls:
-
VB code
-
Private
mvarmVal
As
String
'
属性变量
Public
Event ValChange(vData
As
String
)
'
通知事件
Public
Property
Let
mVal(ByVal vData
As
String
) mvarmVal
=
vData RaiseEvent ValChange(vData)
End Property
Public
Property
Get
mVal()
As
String
mVal
=
mvarmVal
End Property
5 添加一个类clsH.Cls,这个类仅仅是个接口,没有多少功能的.属性默认,代码如下:
-
VB code
-
Public
Property
Get
GetCls()
As
Variant
If
gCLS1
Is
Nothing
Then
Set
gCLS1
=
New
cls1
End
If
Set
GetCls
=
gCLS1
End Property
... 这个工程就完成了,生成exe文件吧,我叫的是pro_comm_pro.exe
另外新建一个标注工程 1 新建工程 2工程->引用->浏览,选择我们pro_comm_pro.exe 3 在form1添加个command1,添加如下代码在form1.frm里面,呵呵:
-
VB code
-
Dim
WithEvents ss
As
cls1
'
ss,事件通知我们数据改变
Dim
cc
As
clsH
'
连接器对象
'
按这个按钮,修改cls1(ss)的属性值
Private
Sub
Command1_Click() ss.mVal
=
Time
End Sub
'
初始连接器cc,初始cls1,事件分发对象ss
Private
Sub
Form_Load()
Set
cc
=
New
clsH
Set
ss
=
cc.GetCls
End Sub
'
接受到数据改变事件
Private
Sub
ss_ValChange(vData
As
String
) Form1.Caption
=
ss.mVal
End Sub
4 编译生成工程吧,我交cli.exe运行2个cli.exe,点击command1,会看到,两个窗口同时改变,需要更多同步信息 (编辑:李大同)
【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!
|