Windows/VB编程逐月通
有一种朋友不在生活里,却在生命力;有一种陪伴不在身边,却在心间。图老师即在大家的生活中又在身边。这么贴心的服务你感受到了吗?话不多说下面就和大家分享Windows/VB编程逐月通吧。
编者按:以前总听别人说VB、VC、VFP的编程方法和技巧,很想写一篇关于可视化编程的整体性介绍文章,但是操作起来的时候却遇到了问题,我不知道该用哪种编程语言来介绍,考虑再三,最后还是决定使用易学易用的VB,VB的各种优点,我就不做过多的介绍了,我唯一想说明的是:希望大家能通过这样的介绍学会Windows编程,而不是简单VB编程,这就是标题为什么起名为Windows/VB编程逐月通的原因。
有一点我要声明,我们这里讨论的是Windows编程,一切讨论都以32位Windows平台即Win32为基准。如果你刚从挂在MS-DOS下的TurboC爬出来的话,那么你有必要把脑子里装的某些东西扔进垃圾堆,旧思想该改一改了。所以让我们先从Windows程序的工作方式谈起吧!
不过全面地讨论Windows的内部工作机制将需要整整一本书的容量,而且这本书对于初学者来讲还未必能看懂。因此现在还没有必要深入了解所有的技术细节,这些部分将随着学习的深入而深入。Windows的工作机制,简单地说就是三个关键的概念:窗口、事件和消息。
什么是窗口,你千万别告诉我是一个个的应用程序窗口。在我们讨论编程时窗口是带有边界的矩形区域。也许你已经了解几种不同类型的窗口:如,Windows95的“资源管理器”窗口、文字处理程序中的文档窗口或者弹出提示有约会信息的对话框。除了这些最普通的窗口外,实际上还有许多其它类型的窗口。命令按钮是一个窗口。图标、文本框、选项按钮和菜单条也都是窗口。正因为有了这么多的窗口Window的后边才加上了一个s。
“MicrosoftWindows操作系统通过给每一个窗口指定一个唯一的标识号(窗口句柄或hWnd)来管理所有的窗口。操作系统连续地监视每一个窗口的活动或事件的信号。事件可以通过诸如单击鼠标或按下按键的操作而产生,也可以通过程序的控制而产生,甚至可以由另一个窗口的操作而产生”。这是微软公司对事件的定义。明白什么意思了吗?好了,不打官腔了。说白了,事件就是你用标点标识了什么,敲了哪个键了,或者程序运行发生什么情况了。发生了一个事件,Windows操作系统就给相应的应用程序发出一条消息。这是由操作系统自动完成的。具体怎么做的,你管不了也管不着。
我们要做的工作有很大一部分工作就是写一些处理这些消息的函数。还记得怎么用TurboC、TurboPascal、QuickBasic写一个菜单吗?菜单用类似于print之类的函数或语句一点一点打出来,然后再执行一个输入,输入的值往往是一个菜单选项,最后,根据这个输入的值调整相应的子程序。这个过程与我们所说的消息处理过程是类似的。所不同的是Windows的应用程序随时都可以接受消息,然后一条一条的处理。这里有一个很典型的例子:不知道大家注意到没有,在光驱发生“死读”的时候,系统会发生暂时的死机,用鼠标点什么都没用。等盘读过去了,刚才点的菜单都弹出来了,点的图标也全开始运行了。Why?Because:在光驱发生“死读”的时候,占用了很多的系统资源,所以看起来像死机一样。假如此时,用鼠标点一个下拉菜单,系统会给处理下拉菜单的程序发一个消息,通知有鼠标在点它。但是,此时系统资源不足,菜单的处理程序无法运行。过了一会儿,光驱读过去了,系统资源充足了,才开始进行消息处理运行下拉菜单的程序。所以,当死机时千万别胡点,按一下alt ctrl delete,就按一下,等到弹出"关闭程序"对话框时,关闭掉那些被注上没有响应程序。这样,能够释放一些系统资源给其他程序使用,从而保证其他程序能够继续运行。好像这一招在WindowsNT上比在Windows95/98上灵,不过有一点是肯定的,就是死机的时候不要慌。
看到这里,先让你的思想稍做整理,回想一下所说的Windows,然后准备跟着我去窥探VB。
前面没有看明白的话,你大可不必担心今后的学习。相反,今后的学习会有助于对前面内容的理解。
好了,让我们先忘记一切的烦恼,开始一个新的话题:MicrosoftVisualBasic。我想这个快捷开发的代名词你一定听说过。至于VB的集成开发环境我不想多作介绍。自己打开VB看一看,就知道菜单、工具栏和各式各样的窗口都是什么样子了。
废话少说,我们开始我们第一个Windows应用程序——HellotheWorld。第一步,在VB里New出一个标准的EXE工程(StandardEXEProject)。那个点满黑点的窗体就是未来你的应用程序里的显示的窗体。然后,在工具箱(一般在左手一边)里点命令按钮画在窗口上。这个过程就像在Windows画板里画点东西似的。接下来,我们来设置窗口属性。找到你的Properties窗口(一般在右下脚)。一定要确定当前显示的是窗体Form1而不是命令按钮Command1的属性。否则,可以在属性窗口上的下拉菜单上选一下。每选中一个属性,都可以在这个小窗口下方看到属性说明,这样你就明白每个属性都是来干什么的了。我们现在来试着修改一下窗体的Font(字体)属性。这时,弹出了一个字体的对话框。然后,选择你喜欢的字体、字号、样式。最后双击你刚才画上的那个按钮,添加代码。看到一个文本编辑器弹出了吗?就在光标的位置写上form1.print"HellotheWorld"。一般来讲,敲完了form1.时会出现一个下拉菜单,那是一个提示菜单,告诉你后边写些什么,不过你不用管它,把刚才让你敲的那句话敲完,就大功告成了。
好了,现在你可以按播放键向全世界问好了。我们注意到程序的窗体就是我们刚才画的那个窗体,这叫所见即所得。点一下命令按钮,你可以看到HellotheWorld在窗体的左上角显示出来,字体就是你刚才设置的那样。
在VB下开发应用程序就是这么三步:设计界面、设置属性、编写代码。《孙子兵法》里说:始计于庙堂之上。其实编程序和对外作战是一样的,先要有一个总的设计,然后再由粗到细的一步一步安排细节。设计界面,不一定是个美术问题;在你设计界面时,也把你程序的功能定制好了。接着,按照你程序功能的需要,设置你各个窗体上的控件和各个窗体自身的属性。控件可以初步理解为放在工具箱里的东西,像命令按钮、文本框、滚动条之类的东西。至于确切的定义我们以后再讨论。
HellotheWorld是一个典型而简单的Windows应用程序。我们可以结合前面的内容看一看这个程序是如何运行的。在这个程序运行开始,就是带有命令按钮的一个窗体在等待一些事件的发生。用鼠标点命令按钮,就激发了一个click事件,系统得知后立刻给相应的应用程序发一条消息;当应用程序检测到这条消息,就进入相应的消息处理过程进行处理。所以我们要在PrivateSubCommand1_Click()中添加代码。
现在我们有必要了解一下VB的代码编辑器。这是一个比较简单的文本编辑器,所不同的是在编辑器的上方有并排有两个下拉列表框。左边是一些编程对象,右边是左边当前对象所能接受的消息。比如说左边选command1,右边选click,若Command1_Click存在,光标会自动移到Command_Click的处理函数中;若不存在,则生成一个Command1_Click的过程声明。
既然在这里提到了对象这个概念,我就没有理由简单说一说面向对象的程序设计。首先,我们要搞清什么是对象。“对象是类的一个实例。一个定义好的数据结构再加上定义在其上的操作称之为类。”N多本书都用这种晦涩的语言解释什么是类,什么是对象。在VB里,类和对象的概念就很直观了,就是在窗体上画一个按钮的动作,足以把这两个概念解释清楚。让我们再细细品味一下这个过程:先点一下工具箱里的command图标,然后在窗体上一拉,就在窗体上建立了一个叫command1的命令按钮。我们刚才的编程,全是围绕command1进行的。那么command1就是一个对象。它是由command生成的一个实例,command就是生成command1这个实例的类。Command的属性正好是command的数据结构。窗体也是一个类,名字叫form,程序里的form1是它的实例,print是定义在它上面的操作。其实,类、对象这些东西到是挺像“白马论”中所说的。马是一个类,白马就是马的一个实例,同样还有黄马、黑马,所以说白马非马。
哎呀,又胡扯了。第一步到此结束。以后的一段日子,我们将讨论VB开发的一些方法和技巧,举一些例程。让你真正能做出一些较为实用的东西,至少它们可以成为一些大软件某一部分的前体。->