Module触发同一工程中用户控件的事件?

myrfy2004 2006-01-24 10:17:31
自己写一个控件,通过这个控件设置了一个CallBackFunction,这个Function在一个Module中,如何在发生CallBackFunction时用这个Function触发用户控件中的一个事件?
...全文
23 点赞 收藏 2
写回复
2 条回复
切换为时间正序
当前发帖距今超过3年,不再开放新的回复
发表回复
zyl910 2006-01-24
在自定义控件中声明一个Friend方法,用来触发事件
在模块中放一个数组,登记控件对象(在设置回调函数前向该数组添加自身控件对象,之后橡树组删除自身对象)
在回调函数中遍历这个数组,查找对应的控件对象,然后调用控件对象的Friend方法


在VB中封装回调函数是很麻烦的事
这主要是因为VB没有指针,特别是没有函数指针,尤其是没有对象方法指针
封装回调函数用有指针的语言方便得多,如在C++中好的多


如果是想封装子类,可以不用数组,直接将控件对象地址保存在窗口属性中(SetProp),如vbaccelerator.com的SSubTimer:
http://vbaccelerator.com/home/VB/Code/Libraries/Subclassing/SSubTimer/article.asp


但是子类处理经常会出现重入问题,此时用VB语法无法解决,只能用内嵌汇编代码:
http://www.planet-source-code.com/vb/scripts/ShowCode.asp?txtCodeId=49985&lngWId=1
回复
zou19820704 2006-01-24
什么意思,再说明白点呀
回复
发动态
发帖子
VB基础类
创建于2007-09-28

7453

社区成员

VB 基础类
申请成为版主
社区公告
暂无公告