visual basic for windowss3.0(简称vb)是目前开发windows应用软件的最有效工具之一,它综合运用了baic语言和新的可视化设计工具,不仅功能强大,而且简单易学。 其次,vb具有事件驱动的编程机制,它充分利用windows图形环境的特点,能让开发人员快速地构造强大的应用程序。
那么在开发vb应用软件时,如何充分地扩充vb的功能呢?这就要求在不同的层次上要很好地利用vb最具威力和特色的部分:
●在函数层调用动态链接库。
●在控件层使用vbx。●在应用层执行其他应用程序。
一、在函数层调用功能态链接库(dll)
windows操作系统实际上是由许多功能强大的动态链接库(dll)组合而成。vb考虑到有些工作超过自身语言所及的能力范围,所以提供了直接调用操作系统中这些dll子程序的能力。例如:在正常情况下,窗口的控制菜单提供了七种功能:还原、移动、大小、最小化、最大化、关闭和切换。而在实际应用中,我们希望窗口按设计时的大小显示,不允许用户随意改变窗口大小,也不允许切换到其他窗口,这就要求在设计时必须删除控制菜单中除“移动”和“关闭”选项以外的所有控制菜单项。要完成这一任务,我们首先可把窗体的maxbutton属性和minbutton属性设置为false,不允许窗体最小化和最大化,窗体也就不能还原。然后再把窗体的bordersstyle属性设置为1-fixed single或3-fixed double,不允许窗体改变大小。但vb本身却无法删除“切换”选项和两条分隔线。幸运的是,通过调用windows dll就很容易做到。
通常,要使用windows dll,首先必须说明要使用的dll子程序,我们可在两个地方说明所使用的dll子程序,即在全局模块中说明,或者在窗体层的说明部分中说明。其格式是:
declare sub子程序名lib“库名”[alias“别名”][([参数])]
declare function子程序名lib“库名”[aliass“别名”][([参数])][as数据类型]
第一种格式表示过程没有返回值,第二种格式表示过程返回一个值,该值可用于表达式中,库名如果用的是windows操作环境(在system目录下)中的库,如“user.exe”,“kernel.exe”或者“gdi.exe”等,就用此名作为库名。如果用的是其他来源的dll,则用包括路径的文件名称(如:“c:\windows\brush.dll”)。别名(alias)是允许另外使用别的名称来称呼子程序,尤其是当外来子程序名与vb保留字相同时,它就显得特别有用,参数指要被传递到子程序的参数值,数据类型指的是函数返回值的数据类型,它可能是integer,long,single,double,currency或string。下面就是所要使用的dll子程序的说明:
declare function getsystemmenu% lib"user"(byvalhwnd%,byvalbrevert%)
declare \function \removemenu% lib"user"(byvalhmenu%,byvalnposition%,byvalwflags%)
当说明完dll子程序后,执行dll子程序的方法,就象在vb中执行通用过程(函数)一样。下面我们编写一个名为remove-items-from-system的过程来完成上面例子中提到的功能,过程中调用了上述说明过的两个dll子程序:
sub remove-items-from-sysmenu(a-form as form)
'获取窗体系统菜单句炳
hsysmenu=getsystemmenu(a-form.hwnd,0)
'删除除“移动”和“关闭”外的所有菜单项, 删除时必须从最后一个菜单项开始
r=removemenu(hsysmenu,8,mf-byposition) '删除切换
r=removemenu(hsysmenu,7,mf-byposition) '删除第一条分隔线
r=removemenu(hsysmenu,5,mf-byposition) '删除第二条分隔线
end sub
有了这个过程,在任一窗体的form-load事件中加入下面一行代码就可以删除该窗体除“移动”和“关闭”选项以外的所有控制菜单项:
remove-items-from-sysmenu me
二、在控件层使用vbx
vb功能强大的第二个部分是vbx的使用,即其开放及无限扩增的特性。虽然vb工具箱(toolbox)已经尽量将设计应用软件所需的工具包括在内,但是,为了不断扩充vb的功能,vb提供了一套开发工具(custom control development kit)供第三方开发者来设计所需要的控件。当设计完控件文件后(其文件扩展名为“.vbx”)可以从菜单“file”项下选“add file...”命令,结果画面上出现一个"add file"对话框,双击所需的vbx文件名即可将该vbx加入到vb中,这些控件装入vb后,vb会将这些外来控件加到原有工具箱中,与其他控件一起合并使用。正是因为有了这一技术,vb才能够不断发展,使用vb编程也更为方便、迅速和有效,这是vb区别于其他程序开发环境的主要特色之一。自从vb推出以来,第三方软件公司设计了大量的新控件,下面是开发windows应用程序时几个非常有用的vbx:
●三维控件threed.vbx
它提供了包括命令按钮、复选框、单选钮 、框架、下推按钮和面板在内的六种三维控件,使用这些控件可使窗体更具有立体感。
●图形控件graph.vbx
向图形控件发送数据后,图形控件可绘制二维或三维饼图,、直方图、趋势图,并且可以打印或拷贝到剪贴板上。
●通讯控件mscomm.vbx
它提供了串行通讯的能力,可用于串行端口之间传送和接收数据。
●数据网格控件truegrid.vbx
它既可以作为一般的数据显示表格,也可把一个数据库和一个网格联系起来,它是制作数据库浏览器或数据显示的理想工具。
二、在应用层执行其他应用程序
在编制复杂的大型软件时,我们经常会需要有一些功能相对独立和完善的专用程序,如编辑程序,而这些程序通常是通用和流行并经实践检验的。如果由开发者重新编制这些程序,不仅大大增加了程序工作量以及调试过程,而且功能上很难比得上这些通用程序。显然,如果我们能直接调用这些程序是最为理想的。令人欣喜的是,vb提供了一个可用来调用其他应用程序的shell函数,使vb的某些功能可直接由其他应用程序来完成,从而大大地减少了编程任务。
格式是shell(命令字符串[,窗口类型])
其中的命令字符串是欲执行的应用程序名,可执行文件的扩展名只限于“.com”,“.exe”,“.bat”,“.pif”,缺省扩展名为.exe文件,窗口类型是一整数值,它对应于程序执行时的显示窗口风格,是可选 的,共有下列5种选择:
窗口类型值
窗口类型 1,5,9
正常窗口,具有指针 2
最小窗口,具有指针(缺省) 3
最大窗口,具有指针 4,8
正常窗口,不具指针 6,7
最小窗口,不具指针
当shell函数成功地调用某一个应用程序时,返回一个任务标识(task id),该id表示正在执行的程序的唯一标识。
[例]
x=shell("c:\windows/notepad.exe",1)
该语句调用windows附件中的记事本notepad.exe作为编辑程序来使用,并返回1个id值到x。
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 注册表 操作系统 服务器 应用服务器