您的位置:学习中国 推荐教程 VB编程 正文
原作者:kuku 添加时间:2007-06-02 原文发表:2007-06-02 人气:10 来源:互联网

本文章共3383字,分3页,当前第1页,快速翻页:
 
-----------------------------------------------------------------------------------------------------------------------------------------------

本文提示:《VB程序中处理随机事件》是本站编辑们为广大网友精选的实用文章,本文阐述了关于文章的相关理论,相对来说专业性强,但是本文只是针对于某个问题提出的见解与论述,未必能辐射到相关问题的方方面面,所以本文处理问题的方法仅仅为您提供一些参考。更多问题请查阅学习中国网其他栏目哦.

-----------------------------------------------------------------------------------------------------------------------------------------------

在程序设计过程中,如何轻松地处理众多的随机事件,往往是制作大型系统首先要考虑的问题之一。用C语言开发Windows程序时,可以方便地使用消息机制(Message),但是,设计VB程序时,就没有这样的方便条件了。例如,多个窗口同时打开同一个表(Table),当在一个窗口中对数据进行了修改,而其他的窗口也能够随之进行数据更新,这时就需要有一条说明数据改变了的消息在所有的窗口间进行广播。如果使用的语言是C,只需要定义一条用户消息(UserMessage),就可以实现这一点。可是如果是用VB编程,做起来就不是那么简单了。VB5.0企业版中增添了许多强有力的特性,有几点特性,正好可以帮助我们解决难题。先介绍一下这几个特性:

  1.用户自定义事件:在类模块中,可以使用Event关键字来定义用户自定义事件,使用RaiseEvent语句来产生该事件,这一机制给处理随机事件带来极大的方便。当收到需要广播的消息时,产生一个预定义的事件,而需要处理消息的客体对象,只需截获该事件,就完成了消息的传递。

  2.ActiveX EXE部件:利用VB,可以方便地将共享代码封装在ActiveX部件之中。将消息广播引擎实现于一个ActiveX部件之中,不仅方便了在程序中使用,而且更为重要的一点是,可以实现跨进程间的消息传递。因为ActiveX部件有内部(DLL)外部(EXE)两种,对于外部部件,可以对模块内的全局数据实现共享(关于ActiveX两种代码部件的

区别,请阅读VB的联机帮助文件)。

  3.远程自动化连接:ActiveX部件,是一种标准的客户机/服务器结构,利用Windows平台的COM模型,VB已能方便地将这种结构扩展到整个网络的范围。所以,我们的消息广播设计,在实现了进程间的消息传递之后,进而实现网络上的消息传递,也成为可能。

  通过上面的几点介绍,这一方式的设计思想也就比较清楚了,在具体设计时,通过四个模块之间的相互协作,完成了消息的发送、广播及接收,并将这四个模块封装在一个ActiveXEXE部件之中。下面就是这三个类模块的简单介绍及源代码:

  类模块之一:Msg.cls----在该模块中,定义了消息数据结构VbMsg类,它是消息传递中的载体。这里只是一个简单的例子,如果想实现更多的功能,如建立两点间的数据通道,而不是单纯的广播消息,则可能需要对该结构进行一些扩充。



Option Explicit

/ 说 明:

/ 消 息 类: 定 义 全 局 的 消 息 结 构

Public iType As Long      /消 息 类 型 编 号

Public iName As String     /消 息 名

Public iSource As String    / 消 息 源 说 明

Public iDescription As String /消 息 说 明

Dim iT As Date     / 消 息 发 生 时 间

/返 回 日 期 型 时 间

Public Property Get iTime() As Date

  iTime = iT

End Property

/返 回 字 符 型 时 间

Public Property Get iTimeStr() As String

  iTimeStr = Format(iT, "yyyy.mm.dd hh:mm:ss")

End Property

/ 在 对 象 被 建 立 时, 设 置 消 息 发 生 时 间

Private Sub Class_Initialize()

  iT = Now()

End Sub

  类模块之二:MsgCli.cls ---- 本模块是对客户接收端MsgClient类的定义,这相当于一

个消息接收器。在这个类中定义的一个RecMsg事件,当接收器收到消息时(过程SetMsg被

调用),就产生这一事件.接收器的建立者就截获这一事件,并处理消息。为了避免接收不

必要的消息,声明了minMsg、maxMsg两个变量,以便对VbMsg中的iType属性进行过

滤。

Option Explicit

´ 说 明:

´ 客 户 消 息 接 收 类

´ 定 义 接 收 消 息 事 件, 该 对 象 的 宿 主 类 应 截 获 该 事 件,

并 处 理接 收 到 的 消 息。
 
本文章更多内容1 - 2 - 3 - 下一页>>
本页地址
收藏到:[收藏夹] [百度搜藏] [新浪ViVi] [POCO网摘] [ 和讯网摘] [好哦网摘] [Google书签]
               
[搜狐网摘] [365Key网摘] [天极网摘] [我摘] [博采网摘] [igooi网摘]
相关文章

Video/ Audio压缩数据流播放技术
怎么让窗体透明后,控件不透明?
如何拖动没有边框的窗体?
多个窗体之间如何互相调用
向SQL Server数据库添加图片和文字
vb.net例程集锦
在VB.NET中获得功能加强的分类和查询数组
解析Visual Basic.NET事件编程
VB.NET中对象的克隆
VB.Net编程入门之Hello World 入门篇
VB编程的必备技巧
VB6制作Win98风格的工具栏
VB实现窗口的弹出式菜单
用VB6实现动态增减控件
用VB设计聚焦框程序
用VB做个漂亮的进度条
Cool 3D 浮動按鈕的模擬作法
Office或IE4风格的ToolBar
VB 5.0中实现鼠标拖放
VB5.0下工具条的制作

相关评论


本文章所属分类:首页 推荐教程 VB编程   VB编程