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

myrfy2004 2006-01-24 10:17:31
自己写一个控件,通过这个控件设置了一个CallBackFunction,这个Function在一个Module中,如何在发生CallBackFunction时用这个Function触发用户控件中的一个事件?
...全文
52 2 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
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
  • 打赏
  • 举报
回复
什么意思,再说明白点呀

7,785

社区成员

发帖
与我相关
我的任务
社区描述
VB 基础类
社区管理员
  • VB基础类社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧