VisualBasic编程及实例分析教程1第十章WindowsAPI编程本章内容掌握WindowsAPI编程VisualBasic编程及实例分析教程210.1WindowsAPI编程基础10.2应用实例10.3小结10.4习题本章目录VisualBasic编程及实例分析教程310.1WindowsAPI编程基础API简介API的英文全称为ApplicationProgrammingInterface,即应用程序编程接口,是一些用C语言编写由操作系统自身调用的函数,用来控制Windows的各个部件的外观和行为。API函数是由函数、结构和常量(即Sub或Function、Type、Constant)组成的。可以分为4个功能类别:(1)窗口管理(User):提供建立和管理应用程序的重要函数。(2)图形设备接口(GDI):提供用于管理系统支持的所有图形设备的函数。(3)系统服务(Kernel):提供访问计算机和操作系统资源的函数。(4)多媒体:提供播放声音、动画等的函数。VisualBasic编程及实例分析教程4API浏览器由于API函数不是VB的内部函数,所以在使用它们之前必须显示地加以声明。下面具体介绍API浏览器的使用1.添加“API浏览器”菜单命令为方便程序员打开API浏览器,可以将“API浏览器”菜单命令添加到“外接程序”菜单中。步骤如下:(1)启动VB,打开一个新的标准EXE工程。(2)单击“外接程序”菜单下的“外接程序管理器”菜单命令,打开“外接程序管理器”对话框。(3)在“可用外接程序”列表栏中选取“VB6APIViewer”项,并在“加载行为”框架中选取“在启动中加载”和“加载/卸载”两个复选框。(4)单击“确定”按钮,则将“API浏览器”菜单命令添加到了“外接程序”菜单中。VisualBasic编程及实例分析教程52.加载WIN32API文件VB提供了一个名为WIN32API.TXT的文件,其中包含了在VB在调用API函数时所需要的所有声明、常量以及类型,该文件可以加载到“API浏览器”中。步骤如下:(1)单击“外接程序”菜单下的“API浏览器”命令,打开API浏览器。(2)单击API浏览器的“文件”菜单下的“加载文本文件”命令,弹出“选择一个文本API文件”对话框,从中选择“WIN32API.TXT”文本文件,单击“打开”命令按钮,关闭对话框。这时,便完成了加载WIN32API.TXT文件的过程。3.“API浏览器”功能介绍API浏览器的界面由“菜单栏”、“API类型”组合框、“可用项”列表框、“选定项”列表框、“声明范围”框架、和一个“键入您要查找的内容的开头几个字母”文本框,以及“添加”、“删除”、“清除”、“插入”和“复制”几个命令按钮组成。VisualBasic编程及实例分析教程6API函数声明VB内部函数和Win32API函数间唯一的差别是,API函数需要先声明后使用。声明后,即可象使用VB内部函数一样使用API函数了。这里以SendMessageAPI函数为例,介绍有关API函数的声明。Public[Private]DeclareFunctionSendMessageLibuser32AliasSendMessageA(ByValhwndAsLong,ByValwMsgAsLong,ByValwParamAsLong,lParamAsAny)AsLong下面解释一下这个函数声明的各个部分:(1)Public:表示所有模块的所有过程都可以调用这个API函数。声明时,要在Public和Private中选择一个(2)DeclareFunction:声明对动态链接库(DLL)中函数的引用(3)SendMessage:函数的名称,通常名称可以反映函数的功能,本函数用于向窗口发送消息,窗口接收到消息后,可以根据程序设计处理它们。VisualBasic编程及实例分析教程7(4)Libuser32:表明这个函数是user32.dll动态链接库中的(5)AliasSendMessageA:Alias表明为函数起个别名,SendMessageA就是这个函数的别名,也可以起别的名称,以避免与已有的函数或变量的名称发生冲突(6)ByVal:函数参数传递的类型,ByVal表示传递的是参数的值,如果使用ByRef或什么都不写,则传递的是参数的地址(7)hwndAsLong:参数,并且指明参数的数据类型为Long,其他参数也一样,最后参数的数据类型为Any,表示一种可变的类型(8)AsLong:最后的AsLong表示函数的返回值为Long型数据。在VisualBasic中使用WindowsAPI在VB中,用户使用Name属性来标识每一个控件;而Windows通过句柄(Handle)识别每个窗体、控件、菜单或菜单项等对象。句柄就象人的身份证,不会出现重复。句柄都以h字母开头,且为Long型,而且要按值传递(ByVal)。VisualBasic编程及实例分析教程8当通过API来执行有关控件的某种操作时就必须使用该控件的句柄。为了获得控件的句柄,VB为每个拥有Windows句柄的控件都提供了hWnd属性来表示其句柄。在调用API函数时,有些函数参数需要使用控件的hDC句柄。有些控件(如图片框控件),VB已经为其提供了hDC属性,可以直接使用它作为hDC句柄;而有些控件(如文本框控件),VB只为其提供了hWnd属性,并未为其提供hDC属性,这时,可以通过调用GetDC()这个API函数得到控件的hDC值。VisualBasic编程及实例分析教程910.2应用实例设计一个程序,运行的窗体界面为一个椭圆形状,单击该窗体时可以使窗体形状在矩形窗体和椭圆窗体形状之间进行切换显示。(1)分析。正常的VB窗体为矩形,为了生成椭圆窗体,必须使用API函数。(2)新建一个标准EXE工程,工程中包含一个窗体。(3)使用“API浏览器”向窗体的代码窗口中添加CreateEllipticRgn、CreateRectRgn、SetWindowRgn和DeleteObject四个API函数的声明(4)有关属性的设置如下表所示工程及窗体属性值设置对象属性设置值工程Name(名称)prjAPI窗体Name(名称)frmAPIBorderStyle1-FixedSingleCaption椭圆窗体PictureC:\BackGround.jpgVisualBasic编程及实例分析教程10(5)在窗体的代码窗口中编写代码,见教材第十章第二节。(6)运行程序,结果如椭圆形状图所示。单击窗体,窗体形状如矩形图所示,再次单击又回到椭圆形状图。VisualBasic编程及实例分析教程1110.3小结本章主要介绍了WindowsAPI的概念、API浏览器的使用、API函数声明的组成以及VisualBasic语言中使用API的注意事项,最后给出一个简单的API应用实例。WindowsAPI是应用程序调用系统动态连接库的接口,它提供了强大的功能,可以弥补VB的不足。VisualBasic编程及实例分析教程1210.4习题一、选择题1.在使用WindowsAPI的过程中,句柄是一个非常重要的概念。句柄的一个重要属性为Handle属性,其取值不可以为()。A.HBITMAPB.HMETAFILEC.HICOND.HNAME2.Windows操作系统给用户提供了大量的API函数,这些API函数可以根据各自的功能划分为不同的类别,则API函数EnumFontFamilies()可以归到()。A.窗口管理类B.图形设备接口类C.系统服务类D.多媒体类二、填空题1.VB可以完成几乎所有的Windows应用程序编写,但对于操作系统的访问、对于图形设备的访问等,还需要WindowsAPI函数来完成。所有的API函数是由___________、______________、__________等组成的。2.在Windows操作系统中,系统中的动态链接库文件提供了大量的WindowsAPI函数供用户使用,所谓API是英文_______________的缩写。VisualBasic编程及实例分析教程13三、简答题1.简述在VB中,声明和使用API函数的一般方法和过程?2.如何添加“API文本浏览器”?四、编程题1.使用API函数mciSendString弹出和关闭光驱。2.使用API函数HtmlHelp调用CHM(帮助)文件。