配色: 字号:
《Visual Basic程序设计教程(第3版)》第8章多媒体编程基础
2023-05-24 | 阅:  转:  |  分享 
  
第8章 多媒体编程基础第8章 多媒体编程基础28.1 多媒体控件8.2 调用API函数设计多媒体应用程序8.3 应用OLE开发多媒
体应用程序8.4 应用案例与设计—简单视频播放器的设计8.1 多媒体控件1.Mmcontrol控件的添加Mmcontrol控件
不是标准控件,并没有放在工具箱上,而是以名为MCI32.ocx的文件形式,存放在\Windows\System子目录下,在使用前需
把它加载到工具箱上2.Mmcontrol控件的用途Mmcontrol控件是一个支持32位操作的多媒体控件,使用它无须介入实际的设备
,就可以操纵所有的多媒体设备。8.1 多媒体控件(续)图8.1 Mmcontrol控件8.1 多媒体控件(续)3.Mmcon
trol控件的常用属性Devicetype属性Filename属性Command属性Length属性From与To属性Positi
on属性Notify属性UpdateInterval属性8.1 多媒体控件(续)4.Mmcontrol控件的事件响应Click事
件GotFocus事件LostFocus事件Done事件StatusUpdate事件5.使用Mmcontrol控件的编程方法8.1
多媒体控件(续)【例8.1】 用Mmcontrol控件的多媒体功能设计一个播放声音、MIDI文件的播放器,并具有自动重播和显
示进度的功能。(1)在窗体上创建一个Mmcontrol控件、3个命令按钮,Cmdwave和Cmdmidi分别用来播放声音和MIDI
文件,Cmdexit用来停止播放,其Caption属性分别设置为“Wave”、“MIDI”、“Exit”。创建一个Autoloop
复选框,用于选择是否自动重复播放,2个文本框用于显示播放文件的长度和当前位置,窗体的标题动态显示时间,如图8.2所示。 8.1
多媒体控件(续)图8.2 Mmcontrol 多媒体控件应用 8.1 多媒体控件(续)多媒体控件Mmcontrol1的Noti
fy属性设置为True,以便播放一个文件结束响应Done事件;UpdateInterval属性设置为200微秒,以便在200微秒时
间间隔内自动激活StatusUpdate事件。 8.1 多媒体控件(续)(2)打开代码窗口,创建过程代码。播放声音文件的事件过程
如下:Private Sub Cmdwave_Click() Mmcontrol1.Command="Close" Mmcon
trol1.Devicetype="Waveaudio" Mmcontrol1.Filename="C:\Win98\Media
\Logoff.Wav" Mmcontrol1.Command="Open" Mmcontrol1.Command="Play
" Cmdmidi.Enabled=FalseEnd Sub 8.1 多媒体控件(续)播放MIDI的事件过程如下:Privat
e Sub Cmdmidi_Click() Mmcontrol1.Command="Close" Mmcontrol1.Dev
icetype="Sequencer" Mmcontrol1.Filename="D:\Wfffgz\Temp\Camyon.M
idi" Mmcontrol1.Command="Open" Mmcontrol1.Command="Play" Cmdwa
ve.Enabled=FalseEnd Sub 8.1 多媒体控件(续)停止播放的事件过程如下:Private Sub Cmde
xit_Click()Mmcontrol1.Command="Stop"Mmcontrol1.Command="Close"End
Sub 8.1 多媒体控件(续)创建自动重复播放DONE事件过程如下:Private Sub Mmcontrol1_DONE(
NOTIFYCODE AS INTEGER) If Mmcontrol1.POSITION= Mmcontrol1.LENGTH
THEN Mmcontrol1.Command="Prev"′如果到达文件末尾,则倒带 If Autoloop.Valu
e=1 Then ′如果选择自动播放 Mmcontrol1.Command="Play" END If END If
End Sub 8.1 多媒体控件(续)由于将Mmcontrol1控件的Notify属性设置为True,则当一个Play命令执行
完后响应Done事件,若已选择自动重复播放,执行该事件过程,自动重复播放多媒体文件。利用Mmcontrol控件的 StatusUp
date事件,能对控件的运行状态进行跟踪,事件过程如下:Private Sub Mmcontrol1_Statusupdate()
Form1.Caption=Time$ ′显示变化时间 Text1.Text="文件长度"& Mmcontrol1.
Length Text2.Text="当前位置"& Mmcontrol1.PositionEnd Sub8.1 多媒体控件(续
)Position属性值在播放过程中是变化的,必须加入定时器才能显示动态的数值。由于已将 Mmcontrol1 控件的Update
Interval属性设置为200微秒,StatusUpdate事件在时间间隔200微秒会自动激活,类似于定时器,能对控件的运行进行
跟踪。另外,利用Mmcontrol控件的StatusUpdate事件,计时是从开始Play时算起的。如果利用Timer控件定时,则
计时是从程序运行时算起的,所以前者更适用。8.2 调用API函数设计多媒体应用程序API(Application Program
ming Interface )应用程序编程接口。Windows API是作为Windows的一部分函数集合,都放在动态链接库 D
LL(Dynamic Link Library)中8.2 调用API函数设计多媒体应用程序(续)1.API函数的调用(1)Dec
lare Function函数名Lib"库名“(Byval 参数1 As 类型,…,Byval参数n As 类型) As类型(2)
Declare Sub子程序名 Lib"库名“(Byval参数1 As 类型,…,Byval 参数n As类型)8.2 调用AP
I函数设计多媒体应用程序(续)例如,若调用Sndplaysound()播放声音的 API 函数,声明如下:Declare Func
tion Sndplaysound Lib"Mmsystem"(Byval Soundnameas String,Byval Fl
ags As Integer) As Integer 8.2 调用API函数设计多媒体应用程序(续)2.API浏览器加载API浏
览器,以便在Visual Basic工作界面中,随时打开API浏览器。【例8.2】编写使用API函数画圆角矩形函数和播放.wav文
件的程序。8.2 调用API函数设计多媒体应用程序(续)使用API函数中的Roundrect函数可以画圆角矩形,使用Sndpla
ysound过程,可以播放.wav文件,设计步骤如下:(1)用API浏览器找到名为Roundrect的函数和名为Sndplayso
und的过程,把它们的声明插入到窗体的通用说明栏中。Private Declare Function sndPlaySound L
ib "winmm.dll" Alias "sndPlaySoundA" (ByVal lpszSoundName As Stri
ng, ByVal uFlags As Long) As LongPrivate Declare Function RoundRe
ct Lib "gdi32" (ByVal hdc As Long, ByVal X1 As Long, ByVal Y1 As
Long, ByVal X2 As Long, ByVal Y2 As Long, ByVal X3 As Long, ByVal
Y3 As Long) As Long 8.2 调用API函数设计多媒体应用程序(续)(2)在窗体上增加画圆角矩形和播放文件两
个命令按钮,代码如下:Private Sub Command1_Click() ''画圆角矩形按钮 Cls For I=
0 To 25 Forecolor=RGB(255,I10,I15) d=Roundrect(Hdc,70+I
,30-I,240-I,120+I,50+I,50+I) ''调用RoundRect函数 Next IEnd Sub8.2
调用API函数设计多媒体应用程序(续)Private Sub Cmdplay_Click() ''播放文件按钮 Dim Soun
dfile As String Dim Result As Long Soundfile = Dir("C:\Windows\
Media\" & ".wav") ''指定要播放的文件 Result=Sndplaysound(Soundfile,1)
''调用Sndplaysound函数End Sub 8.2 调用API函数设计多媒体应用程序(续)3.使用MCI高级函数,编写多媒
体应用程序在Windows的DLL动态链接库中,提供了100多个具有多媒体处理能力的API函数Windows 还提供3个与MCI有
关的高级函数:Mciexecute()、Mcisendcommand()、Mcisendstring()8.2 调用API函数设
计多媒体应用程序(续)Mciexecute()函数Declare Function Mciexecute Lib"Winmm.Dl
l" (Byval Ipstrcommand As String) As Long其中,Ipstrcommand是一个MCI命令字
符串,常用的6个MCI命令:Open命令、Close命令、Play命令、Stop命令、Seek 命令、Set命令8.2 调用AP
I函数设计多媒体应用程序(续)【例8.3】 用Mciexecut()函数制作CD播放器。(1)用API浏览器将Mciexecut
e()函数的声明复制到窗体的通用说明栏中。Private Declare Function Mciexecute Lib"Winm
m.Dll" (Byval Ipstrcommand As String) As Long(2)按如图8.7所示设置控件,并编写事
件过程。 8.2 调用API函数设计多媒体应用程序(续)图8.7 CD播放器 8.2 调用API函数设计多媒体应用程序(续)
Private Sub Form_Load() Commad1.Enabled=True ′使打开按钮有效 Commad2.
Enabled=False Commad3.Enabled=False Commad4.Enabled=TrueEnd Sub
8.2 调用API函数设计多媒体应用程序(续)Private Sub Command1_Click() Mciexecute
"Open Cdaudio Alias Cd" ′打开CD设备 Commad1.Enabled=False Comm
ad2.Enabled=True Command2_ClickEnd Sub 8.2 调用API函数设计多媒体应用程序(续)P
rivate Sub Command2_Click() Mciexecute "Play CD" ′播放 CD 音乐
Commad2.Enabled=False Commad3.Enabled=TrueEnd Sub Private Sub C
ommand3_Click() Mciexecute "Stop CD" ′停止播放 Commad1.Enabled=True
Commad2.Enabled=FalseEnd Sub 8.2 调用API函数设计多媒体应用程序(续)Private Su
b Command4_Click() Mciexecute "Close CD" ′关闭 CD 设备 C
ommad1.Enabled=TrueEnd Sub 8.2 调用API函数设计多媒体应用程序(续)Private Sub Op
tion1_Click(Index As Integer) Mciexecute "Set CD Audio All Off"′
静音 Select Case Index Case 0 Mciexecute "Set CD Audio Le
ft On“ ′左声道 Case 1 Mciexecute "Set CD Audio Right On"
′打开右声道 Case 2 Mciexecute "Set CD Audio All On“ ′立体声 E
nd SelectEnd Sub 8.3 应用OLE开发多媒体应用程序【例8.4】 使用OLE控件嵌入Windows“画图”程
序。图8.8 嵌入“画笔”8.4应用案例与设计—简单视频播放器的设计应用案例要求 WindowsMediaPlayer是Wind
ows自带的应用程序,可以在Visual Basic 6.0程序中调用它,并且支持其全屏幕播放等功能。利用WindowsMediaPlayer制作一个用于视频文件播放的视频播放器,其功能分为以下2个: ⑴利用菜单打开指定文件,利用WindowsMediaPlayer控件实现视频播放的控制功能。 ⑵利用菜单实现全屏播放及还原功能。实训八 多媒体编程基础1.调用API函数CreateRoundRectRgn使窗体的外观变成带圆角的矩形窗体。。 2. 利用MMControl设计一个简易播放器⑴ 要求能播放Wave文件。⑵ 要求进度条能显示播放进度,并且显示正在播放文件的总长度和播放长度(时:分:秒)。⑶ 要求显示播放文件的地址,并能循环播放。3. 设计一个MP3播放器。⑴ 要求可手动添加、删除MP3文件。⑵ 要求可以把所选择的MP3文件名存入播放列表文件中。⑶ 要求可以载入播放列表文件。⑷ 要求可以循环播放。
献花(0)
+1
(本文系src862tekto...首藏)