资源描述:
《Visual Basic程序设计教程 第13章》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、13.1调用WindowsAPI13.2编写多媒体应用程序第13章VB与多媒体退出13.1调用WindowsAPI13.1.1用APIViewer查看API3.1.2程序语句返回退出13.1.3使用API函数实例13.1.1用APIViewer查看API用APIViewer查看API函数和常量的方法如下:(1)单击VB程序组中的“API文本浏览器”启动APIViewer。(2)从“File”菜单中选择“加载文本文件”菜单项,打开“选择一个文本API文件”对话框,选择文件“Win32api.txt”。(3)在文本框中输
2、入要搜索的API函数或常量、类型的开始几个字母,就会在“可用项”中显示查找到相应的内容。(4)单击“Add”按钮,在最下面的文本框中就显示出VB声明,单击“复制”按钮将其复制到剪贴板中,随后粘贴到用户工程代码中。图13-1包含API函数信息的文本文件图13-2API浏览器13.1.2API函数声明可以直接将上述复制到剪贴板中的内容粘贴到VB工程代码中声明API函数,也可以直接键入API函数声明。请看如下实例:DeclareFunctionOpenFileLib"kernel32"Alias"OpenFile"(ByV
3、allpFileNameAsString,_lpReOpenBuffAsOFSTRUCT,ByValwStyleAsLong)AsLong其中:Declare:关键字,表明要声明—个外部过程。Function:表明声明的是一个外部函数。如果为Sub,则为外部过程。OpenFile:要声明的外部过程的函数名。Lib:关键字,表明函数位于下面的DLL库中。"kernel32":是DLL的库名,必须用引号括起来。Alias:关键字,表明可以用紧跟其后的别名"OpenFile"来调用此函数。OFSTRUCT:为参数lpReO
4、penBuff的数据类型。其他部分的说明同一般的函数过程。13.1.3使用API函数实例例13-1:制作永远在其他窗口之上的窗口。第一步:新建一个工程,设工程名为MyAPI1,该工程包含3个窗体,名称分别为Form1、Form2和APIform,一个标准模块,名称为APIModule。第二步:在API浏览器中查找SetWindowPos函数,并将其函数声明文本复制到标准模块APIModule中:PublicDeclareFunctionSetWindowPosLib"user32"(ByValhwndAsLong,B
5、yVal_hWndInsertAfterAsLong,ByValxAsLong,ByValyAsLong,ByValcxAsLong,ByValcyAs_Long,ByValwFlagsAsLong)AsLong第三步:在主窗体的代码窗口加上如下代码:ConstSWP_NOMOVE=2'不更新窗口位置ConstSWP_NOSIZE=1'不更新窗口大小ConstHWND_TOPMOST=-1'窗口放在所有窗口顶部ConstHWND_NOTOPMOST=-2'窗口不能放在所有窗口顶部PrivateSubForm_Load
6、()APIForm.ShowForm2.ShowSetWindowPosAPIForm.hwnd,HWND_TOPMOST,0,0,0,0,SWP_NOMOVE_+SWP_NOSIZEEndSub图13-3程序运行实例例13-2:生成特殊形状的窗口。在上述程序的标准模块中加上如下函数声明:PublicDeclareFunctionCreateEllipticRgnLib"gdi32"(ByValX1AsLong,ByValY1As_Long,ByValX2AsLong,ByValY2AsLong)AsLongPubl
7、icDeclareFunctionCreateRoundRectRgnLib"gdi32"(ByValX1AsLong,ByValY1_AsLong,ByValX2AsLong,ByValY2AsLong,ByValX3AsLong,ByValY3AsLong)AsLongPublicDeclareFunctionSetWindowRgnLib"user32"(ByValhWndAsLong,ByValhRgn_AsLong,ByValbRedrawAsBoolean)AsLongForm1窗体的单击事件代码为:Pr
8、ivateSubForm_Click()SetWindowRgnhWnd,CreateEllipticRgn(10,20,500,400),TUREEndSubForm1窗体的双击事件代码为:PrivateSubForm_DblClick()SetWindowRgnhWnd,CreateRoundRectRgn(10,20,500,400,20