API库.docx

上传人:b****5 文档编号:28816384 上传时间:2023-07-19 格式:DOCX 页数:42 大小:114.15KB
下载 相关 举报
API库.docx_第1页
第1页 / 共42页
API库.docx_第2页
第2页 / 共42页
API库.docx_第3页
第3页 / 共42页
API库.docx_第4页
第4页 / 共42页
API库.docx_第5页
第5页 / 共42页
点击查看更多>>
下载资源
资源描述

API库.docx

《API库.docx》由会员分享,可在线阅读,更多相关《API库.docx(42页珍藏版)》请在冰豆网上搜索。

API库.docx

API库

每个Windows的成份都是一个动态链接库(DLL,DynamicLinkLibrary),这些动态链接库构成了Win32API函数。

Windows中的主要DLL如下:

(1)Windows内核库(Kernel32.dll)

内核库中的过程用于处理操作系统功能的所有核心工作。

例如,多任务管理、内存管理等。

此外,内核库还管理系统注册表。

(2)Windows用户界面管理库(User32.dll)

用户界面管理库包括了Windows管理、菜单、光标、定时器和通信等有关的过程。

在Windows中,窗口的标识被称为“句柄”(Handles),简称为“hWnd”,它是一个16位的内存地址。

VisualBasic为窗口对象提供了hWnd属性,于是可通过hWnd属性来引用有关窗口。

(3)Windows图形设备界面库(Gdi32.dll)

图形设备界面库提供了用于管理系统支持的所有图形设备的函数,包括屏幕和打印机等设备的管理。

GDI库中的函数为应用程序提供与设备无关的绘图内容,允许在对象间共享图形。

在应用程序中通过GDI库中的过程绘图,它不是直接面向硬件操作,而是操作一个“设备描述表”,它通过句柄hDC来跟踪。

VisualBasic为图形对象也提供了hDC属性,于是可通过hDC传递给GDI中的过程来执行图形操作。

(4)多媒体库(Winmm.dll)

多媒体函数可用于播放波形音频、MIDI音乐和数字式影像。

用MIC命令字符串和MIC命令消息接口可以完成这些工作。

使用VisualBasic函数和使用WindowsAPI函数之间的唯一差别是,WindowsAPI函数需要先声明后才能使用。

从VisualBasic应用程序中访问WindowsAPI函数之前,必须在VisualBasic应用程序中用Declare语句将API函数声明为外部过程。

在声明中应该告诉VisualBasic传给DLL的数据类型及从DLL中返回的数据类型。

以后便可以像使用任何VisualBasic中的函数和过程一样来使用API函数。

使用Declare语句声明外部过程,有如下两种格式:

(1)DeclareFunction函数名Lib"库名"(ByVal参数1As类型,...,ByVal参数kAs类型)As类型

(2)DeclareSub子程序名Lib"库名"(ByVal参数1As类型,...,ByVal参数kAs类型)

如果没有返回值,使用第2种语法。

当被声明的过程名与VisualBasic中的过程、变量、常量发生重名或语法冲突时,可在“Lib"库名"”短语后插入“Alias"别名"”短语。

此时,Lib短语中的库名使用其他的名字,而在Alias短语中的别名使用DLL中的真正的名字。

10.1.2在VB中访问查看API函数

在VisualBasic中使用API函数之前必须先进行声明。

最简单的办法是使用VisualBasic专门提供的预定义WindowsAPI声明等API文本文件。

Win32api.txt文件包含VB中经常使用的许多WindowsAPI的过程声明,多媒体要使用Winmmsys.txt文件。

这些文件位于VisualBasic主文件夹下的Common\Tools\Winapi子文件夹中。

要使用这些文件中的函数、类型等定义时,只需将其从文件中复制到VisualBasic模块中即可。

要查看并复制Win32api.txt中的过程,可以使用API文本浏览器应用程序,也可以使用其他的文本编辑器。

单击VisualBasic程序组中的API文本浏览器,即可启动API函数查看工具,如图2.10.1所示。

图2.10.1APIViewer窗

在图2.10.1的API函数查看工具的“文件”菜单中选择“加载文本文件”命令,可装入API函数信息的文本文件,选择“加载数据库文件”命令,可装入API函数信息的数据库文件。

由于打开数据库文件比打开文本文件快,为提高查看速度,可在装入API的文本文件时将其转换成数据库。

图2.10.2显示了选择“加载文本文件”命令后出现的装入API函数信息的文本文件对话框。

文件名框中列出了32位版本使用的Win32api.Txt文件名。

如果选择加载数据库文件命令,出现与图2.10.2类似的对话框,显示装入API函数信息的数据库文件Win32api.mdb。

在加载了包含API函数的信息文件之后打开如图2.10.3所示窗口。

图2.10.2API函数信息的文本文件

图2.10.3API函数查看工具使用

图2.10.3所示的API函数查看工具窗口中的各按钮作用如下:

“API类型”下拉列表框可选择要查看的信息类型(声明、常数、类型等),第2个文本框可输入需要查找的API函数名的头几个字母,浏览器将自动定位到需要的条目;

单击“添加”按钮可将找到的条目加入到选定项框中;

单击“删除”按钮可删除“选定项”框中指定的条目;

单击“清除”按钮可将“选定项”框中所有条目删去;

单击“复制”按钮可将“选定项”框中的所有内容复制到剪贴板上。

根据需要,将选定的API函数内容复制到剪贴板上,然后,进入VisualBasic工程,在需要加入API信息的模块内指定插入点,再从“编辑”菜单中选择“粘贴”命令。

10.1.3使用API函数例程

例10.1软件封面制作。

每一个软件在启动时都有一个封面,显示应用程序名、作者及版权信息等。

MicrosoftOffice软件封面的特点是当软件封面在屏幕出现后,后台继续加载主控程序窗体,当主控程序窗体加载完毕,封面自动关闭。

软件封面显示过程实质上是使窗口保持在最上层,这是通过调用SetWindowPos接口函数来完成这一任务。

本例将介绍此类封面制作过程。

软件封面需要用一个单独的窗体构成,并要将窗体的ControlBox、MaxButton和MinButton属性设置为False,使窗体在运行时不显示控制菜单框及最大、最小化按钮。

另外,封面窗体不能有标题栏。

要关闭窗体的标题栏,必须将窗体的Caption属性置空(不能含任何字符)。

可在封面窗体上放置一个图像框以便装入一幅照片作为背景,放置两到三个标签用以显示软件标题与版权信息等,如果设置标签的BorderStyle属性为0,标签将无边界,将BackStyle属性设置为0,使标签背景为透明,这样不会破坏封面背景图案的完美。

本例假定封面窗体为frmCover,封面背景图案、软件标题与版权信息等具体数据请读者自行确定。

主控程序窗体除了所含有的功能控件外,还要一个定时器控件,用于到达预定时间时自动关闭封面窗体。

在设计时定时器控件的Enabled属性设置为Fales,Interval属性设置为0。

本例假定主窗体为frmMain,定时器为Timer1,如果只是为了演示目的,主窗体上其他控件可以暂时不设置。

在加载主控程序窗体的过程中,为保持封面窗体一直处于主窗口的上方,需要通过模块文件(BAS)来引用API的SetWindowPos接口函数,由该函数来完成这一任务。

SetWindowPos函数的格式为:

DeclareSubSetWindowPosLib"user32"(ByValhWndAsLong,_

ByValhWndInSertAfterAsLong,ByValxAsLong,ByValyAsLong,_

ByValcxAsLong,ByValcyAsLong,ByValwFlagsAsLong)AsLong

这里,参数hWnd为窗口句柄,它指示一个窗口;hWndInSertAfter指示另一个窗口,由hWnd指示的窗口将被定位在该窗口后;x,y为窗口左上角坐标;cx,cy为窗口的新的长和宽度;wFlags是影响窗口大小、位置和是否显示的16位值。

如果hWndInSertAfter未包含合法窗口句柄,则可用下列值之一:

HWND_BOTTOM窗口将被定位在按A~Z顺序排列的窗口底部

HWND_TOP窗口将被定位在按A~Z顺序排列的窗口顶部

HWND_TOPMOST窗口将被定位在所有窗口顶部

HWND_NOTOPMOST窗口不能被定位在所有窗口顶部

下面进入工程设计,在窗体的声明节中定义一些常数:

ConstSWP_NOMOVE=2'不更新窗口位置

ConstSWP_NOSIZE=1'不更新窗口大小

ConstFLAGE=SWP_NOMOVEOrSWP_NOSIZE

ConstHWND_TOPMOST=-1'窗口放在最上面

当主窗口激活后,可通过Form_Activate事件启动定时器控件Timer1,本例中设置封面窗体延迟时间为2s。

SubForm_Activate()

Timer1.Interval=2000

Timer1.Enabled=True

EndSub

主窗体的Form_Load事件就是装入封面并使其保持在主窗口的上方。

由于程序的读入有一个过程,在这段时间内,可以像Office系列软件一样,把鼠标的形状设置成沙漏形,表示正在读入程序。

SubForm_Load()

Screen.MousePointer=11'鼠标的形状设置成沙漏形

frmCover.Show'装入封面

frmCover.Refresh

SetWindowPosfrmCover.hWnd,HWND_TOPMOST,0,0,0,0,FLAGE

EndSub

在调用SetWindowPos函数时,形参hWnd对应frmCover.hWnd,指示frmCover窗口;形参hWndInSertAfter选用常数HWND_TOPMOST,使frmCover窗口被定位在所有窗口顶部;形参x,y,cx,cy都取0;选用常数FLAGE不更新frmCover窗口位置和大小。

定时器控件Timer1的Timer事件控制封面的自动关闭,并使鼠标的形状返回正常状态。

SubTimer1_Timer()

Enabled=False

Unloadfrmover

Screen.MousePointer=0

EndSub

图2.10.4演示了软件封面运行过程。

封面窗体关闭了窗体的标题栏、控制菜单框及最大和最小化按钮,上面放置了一个图片和几个标签,并使其保持在主窗口的上方。

图2.10.4软件封面

在任何应用程序中,使用本技术可使某一窗口保持在最上方。

例10.2Windows系统任务栏的控制。

在应用程序中有时需要使用包括任务栏在内的整个屏幕,这时需要把任务栏窗体隐含,程序运行结束后,重新显示任务栏。

为了达到这一目的,可使用SetWindowPos函数。

API的SetWindowPos接口函数除了可以控制窗口的大小和位置外,还可以控制窗口的显示与隐含。

当参数wFlags取值&H80时,隐含窗体;取值&H40时,显示窗体。

为了能找到被隐含的窗体,需要调用API的FindWindow函数,其格式如下:

FindWindow(ByVallpClassNameAsString,ByVallpWindowNameAsString)AsLong

这里,参数lpClassName为窗体类名;lpWindowName为窗体名。

在模块文件(BAS)输入以下代码:

DeclareFunctionFindWindowLib"user32"Alias"FindWindowA"_

(ByVallpClassNameAsString,ByVallpWindowNameAsString)AsLong

DeclareSubSetWindowPosLib"user32"(ByValhWndAsLong,_

ByValhWndInSertAfterAsLong,ByValxAsLong,ByValyAsLong,_

ByValcxAsLong,ByValcyAsLong,ByValwFlagsAsLong)AsLong

PublicConstswp_hidewindow=&H80

PublicConstswp_showwindow=&H40

编制通用过程Formhide通过调用SetWindowPos对任务栏进行控制,当参数hideflag为1时,隐含窗体,否则显示窗体。

PublicSubFormhide(hideflagAsInteger)

Dimhwnd1AsLong

hwnd1=FindWindow("shell_traywnd","")

Ifhideflag=1Then

CallSetWindowPos(hwnd1,0,0,0,0,0,swp_hidewindow)

Else

CallSetWindowPos(hwnd1,0,0,0,0,0,swp_showwindow)

EndIf

EndSub

在主窗体上通过两个命令按钮的Click事件调用通用过程Formhide。

PrivateSubCommand1_Click()

Formhide

(1)

EndSub

PrivateSubCommand2_Click()

Formhide(0)

EndSub

例10.3生成特殊形状的窗体。

通常窗体都是矩形状的,但是可以通过调用API函数使窗体的外观变成椭圆状或带圆角的矩形状窗体。

椭圆状窗体需要通过CreateEllipticRgn函数建立,圆角的矩形状窗体需要使用CreateRoundRectRgn函数建立,然后再使用SetWindowRgn函数调用。

下面的代码说明了椭圆状外观窗体的建立过程。

在BAS模块文件中调用CreateEllipticRgn函数和SetWindowRgn函数:

PublicDeclareFunctionCreateEllipticRgnLib"gdi32"(ByValX1AsLong,_

ByValY1AsLong,ByValX2AsLong,ByValY2AsLong)AsLong

其中参数(X1,Y1)为椭圆区域在窗体内左上角的坐标,(X2,Y2)为椭圆区域在窗体内右下角的坐标,采用象素数值。

PublicDeclareFunctionSetWindowRgnLib"user32"(ByValhWndAsLong,_

ByValhRgnAsLong,ByValbRedrawAsBoolean)AsLong

参数hWnd为窗口句柄;hRgn为窗口形状;bRedraw为图形重绘控制。

Form_Load()事件为主控程序:

PrivateSubForm_Load()

SetWindowRgnhWnd,CreateEllipticRgn(10,20,450,300),True

EndSub

这里,实际参数(10,20,450,300)表示椭圆区域的大小,程序运行效果如图2.10.5所示。

可以通过调用CreateRoundRectRgn函数建立带圆角的矩形状窗体,该函数中的第3组坐标参数(X3,Y3)表示圆角弧线的圆心坐标。

例10.4在应用程序中启动或关闭计算机。

图2.10.5椭圆状窗体

在应用程序中有时需要启动或关闭计算机系统。

API的ExitWindowsEx函数就可方便地实行重新启动计算机或退出Windows系统并关闭计算机。

ExitWindowsEx函数有两个参数,通过参数uFlags指示执行该函数时要完成的动作,可以用一个或几个常数的组合来指定动作。

这些常数为:

EWX_LOGOFF(=0)'强制终止所有进程,退出登录

EWX_SHUTDOWN(=1)'安全地关闭计算机

EWX_REBOOT(=2)'重新启动计算机

EWX_FOREC(=4)'终止所有进程

EWX_POWEROFF(=8)'关闭计算机,如果计算机支持节电特性,关闭电源

要重新启动计算机需要向ExitWindowsEx函数发送:

强制终止所有进程,退出登录、关闭计算机、重新启动计算机等方面的信息,即要设置uFlags的组合值为0+1+2。

要关闭计算机系统需要向ExitWindowsEx函数发送:

终止所有进程、退出登录、关闭计算机、关闭电源等方面的信息,即要设置uFlags的值为0+1+4+8。

ExitWindowsEx函数的dwReserved参数用于控制是否要保留当前窗体状态。

假定窗体上的控件如图2.10.6所示。

在模块文件中声明ExitWindowsEx函数:

图2.10.6启动或关闭计算机

DeclareFunctionExitWindowsExLib"user32"(ByValuFlagsAsLong,ByValdwReservedAsLong)AsLong

在Form的声明节定义ExitWindowsEx函数要使用的常数:

ConstEWX_LOGOFF=0

ConstEWX_SHUTDOWN=1

ConstEWX_REBOOT=2

ConstEWX_FOREC=4

ConstEWX_POWEROFF=8

ExitWindowsEx函数调用格式如下:

PrivateSubCommand1_Click()

IfOption1.Value=TrueThen

answer=ExitWindowsEx(13,dwReserved)'关闭计算机

EndIf

IfOption2.Value=TrueThen

answer=ExitWindowsEx(3,dwReserved)'重新启动

EndIf

EndSub

可参考上述格式在自己的应用程序中调用ExitWindowsEx函数,用于控制Windows系统的自动关闭或重启动。

10.2多媒体应用

10.2.1多媒体基础

多媒体是一项正在逐步发展的科技,在人类文化活动中扮演的角色越来越重要。

多媒体有效地结合了计算机及传统的视听科技,是一种让用户以交互方式将文本(text)、图像(image)、图形(graphic)、音频(audio)、动画(animation)、视频(video)等多种信息,经过计算机软硬件设备获取、操作、编辑、存储等处理后,以单独或合成的形态表现出来的技术和方法。

Windows是支持多媒体的操作环境中的一个系统,它提供了MicrosoftMPC的多媒体规格。

主宰MPC多媒体外部设备的灵魂是媒体控制接口(MCI,MediaControlInterface)命令。

MCI提供了许多高级且与设备无关的命令让应用程序直接调用。

常用的MCI命令如表2.10.1所示,常见的支持MCI指令的多媒体设备类别代号如表2.10.2所示。

表2.10.1常用的MCI命令

命令

功能

Back

单步回倒

Close

关闭媒体设备

Eject

弹出媒体

Next

通过Seek快进到下一个曲目

Open

打开媒体设备

Pause

暂停播放或录音

Play

播放

Prev

通过Seek快进到当前曲目开始位置或上一个曲目

Record

录音

Save

保存到文件

Seek

查找一个位置

Sound

用Sound播放声音

Step

步进

Stop

停止播放或录音

表2.10.2常见多媒体设备类别

设备类别

设备名代号

数字图像

Avivideo

动画播放设备

Animation

CDAudio设备

CdAudio

数字动态图像

Digitalvideo

视频重叠设备

Overlay

MIDI序列发生器

Sequencer

可程序控制录像机

Vcr

激光视盘机

Videodisc

语音播放设备

Waveaudio

多媒体的音频格式有CD音频、WAV音频和MIDI。

CD音频采用16位、44.1Hz的采样频率来记录和播放声音。

WAV音频提供了通用的声音系统,用不同强度和振动次数序列来表示,它是一种连续变化的模拟化声音波形信息。

其采样频率可从8位的11.025Hz到16位的44.1Hz,采样频率越高音质就越好,但文件占用的空间也越大。

WAV音频具有极大的灵活性,用户可以对它进行读、写、修改和检索操作。

MIDI是音乐设备数字接口(MusicInstrumentDigitalInterface)的简写。

它只是一种协议,用于计算机、MIDI键盘和合成器之间的通信。

几乎所有的声卡上都有MIDI合成器,通过它就可播放MIDI音乐。

MIDI的优点在于它节省存储空间,一段几分钟的乐曲只需几十千字节的存储空间,而以8位11.025Hz采样频率保存1s的WAV声音信号需要11KB的存储空间。

视频是将一幅幅独立图像组成的序列按照一定的速率(一般为25帧/s或30帧/s)连续播放,利用视觉暂留现象在人的眼前呈现出连续运动的画面。

在Windows中可用的视频文件类型有AVI、MOV、MPG和DAT等。

AVI(AudioVideoInterleave)即声音视频交换文件,它包含了一系列的位图和音频数据段,采用Intel公司的Indeo视频有损压缩技术将视频信息与音频信息混合交错地压缩存储在同一文件中。

MOV是QuickTimeforWindows视频处理软件所选用的视频文件格式。

MPG是一种全屏幕运动视频标准文件。

DAT是VCD专用的视频文件格式。

Windows的视频播放器提供了与硬件无关、纯软件压缩与解压缩的方法,让Windows的用户能在不增加硬件设备的条件下处理视频文件。

10.2.2MMControl控件

MMControl控件是VisualBasic6.0中进行多媒体程序设计的重要部件。

在使用前需要通过“工程”菜单的“部件”项将MicrosoftMultimediaControl6.0(Mci32.ocx)加载到工具箱内。

画在窗体上的MMControl控件如图2.10.7所示。

图2.10.7窗体上的MMControl控件

其上的多媒体工具按钮的功能与录音机或录像机的功能按钮是一样的,从左到右的9个按钮依次为Prev(倒带)、Next(快进)、Play(播放)、Pause(暂停)、Back(回倒)、Step(步进)、Stop(停止)、Record(录音)和Eject(弹碟)。

MMControl控件本质上是一个用户和Windows多媒体系统之间的接口。

通过这个接口用户无需介入实际的设备就可操纵所有的多媒体设备。

例如,向音频卡、MIDI序列发生器、CD-ROM驱动器、视频CD播放器、视频记录器等设备发出MCI命令。

此外,MMControl控件也支持视频文件(avi)的回放。

要操纵媒体设备只要通过设定MMControl控件的属性即可。

MMControl控件的主要属性如表2.10.3所

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 求职职场 > 面试

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1