在程序设计过程中,如何轻松地处理众多的随机事件,往往是制作大型系统首先要考虑的问题之一。用c语言开发windows程序时,可以方便地使用消息机制(message),但是,设计vb程序时,就没有这样的方便条件了。 例如,多个窗口同时打开同一个表(table),当在一个窗口中对数据进行了修改,而其他的窗口也能够随之进行数据更新,这时就需要有一条说明数据改变了的消息在所有的窗口间进行广播。如果使用的语言是c,只需要定义一条用户消息(usermessage),就可以实现这一点。
可是如果是用vb编程,做起来就不是那么简单了,最初我是试着这样实现的:
自定义了一个消息结构(vbmsg),并在程序的主窗体内,建立一个消息广播引擎,主要由一个消息队列和一个定时消息广播器所组成。消息广播器固定隔一定时间检查一次消息队列,如果有消息存在,就将其发送给所有的打开的窗口,并将该消息从队列中删除。如此再定义一个全局的消息发送过程(sendmsg),将要发送的消息(vbmsg)送入消息队列。
这样当需要广播消息时,只需填充好消息结构,调用sendmsg过程即可。这里较为复杂的是消息广播器如何将消息发送到各窗口:这需要作个硬性规定,就是每一个窗体都必须定义一个形式完全相同的消息接收函数(recmsg),在这个函数中对接收到的消息进行处理,当然也可以什么都不做。
有了这样的规定之后,消息广播器在进行广播时,就可以是利用vb系统定义的全局变量forms,遍历所有的窗体,并调用一遍每个窗体的消息接收函数,其样子大致如下:
public sub sendmsgtoforms(msg as vbmsg)
dim frm as form
for each frm in forms
frm.recmsg msg
next frm
end sub
Java Asp PHP .Net XML C/C++ CGI VB Jsp J2ee J2se J2me EJB Servlet Tomcat Resin Struts Weblogic Eclipse ANT GUI JMS Web servise IDEA Webphere Hibernate Spring Jboss Applet Swing Socket Javamail Perl Ajax P2P 安全 模式 框架 测试 开源 游戏
Windows XP Windows 2000 Windows 2003 Windows Me Windows 9.x Linux UNIX 注册表 操作系统 服务器 应用服务器