背景:                 
[本书目录] [图书首页] [本书讨论区]  
链接地址:http://www.17xie.com/read-3403.html    注册17xie 一起来写书 实现您的出书梦想!

9.4.1  Windows Media Player控件的属性

Windows Media Player控件的主要属性有:

1AutoRewind:在播放完一个文件后,是否将指针返回到该文件的开始,默认值为False

2AutoSize:如果该控件定义的区域小于动画的大小,则在运行时该控件是否会自动根据视频动画的大小设置自身的大小。默认值为False

3AutoStart:是否在启动窗体的同时,就运行文件。默认值为True

4ClickToPlay:在控件上单击时,是否开始播放文件,默认值为True。当取值True时,在正处于播放状态的控件上单击,会暂停播放,再次单击,会继续播放。

5Display Mode:取0-mpTime时,显示模式是时间;取1-mpFrames时,显示模式为帧。

6EnableTracker:是否允许调整播放进度,默认值为True

7FileName:保存要播放的文件名及其路径。

8Mute:在播放期间是否禁声,默认值为False

9PlayCount:保存循环播放的次数。

10ShowAudioControls:是否显示音量调节按钮,默认值为True

11ShowControls:是否显示播放控制栏,默认值为True

12ShowStatusBar:是否显示状态栏,默认值为True

9.4.2  Windows Media Player控件的方法

Windows Media Player控件有4种基本操作方法:OpenPlayPauseStop方法。在使用该控件时,可用Open方法打开多媒体文件,用Play方法进行播放,用PauseStop方法停止播放。

9.5  项目指导(一个简单的媒体播放器)

新建一个窗体,设置其MaxButton属性为False。在上面画一个组合框,设置其Style属性为2-Dropdown List,画五个命令按钮,一个通用对话框(Common Dialog)控件,一个媒体播放器(Windows Media Player)控件,其布局如图9-10所示。

9-10  媒体播放器设计界面

注意:工具箱中默认没有通用对话框和媒体播放器控件,添加这两个控件的方法为:单击“工程”菜单的“部件”命令,在弹出的“部件”对话框中选择“控件”选项卡,向下拖动滚动条,找到这两个ActiveX控件,选中它们,如图9-11所示,单击确定即可。

9-11  选择媒体播放器控件

在其代码窗口中输入如下代码:

Option Explicit

Private Declare Function GetSystemDirectory Lib "Kernel32" Alias "GetSystemDirectoryA" (ByVal lpBuffer As String, ByVal nSize As Long) As Long  '返回windows\system所在的文件夹

Private WinSysPath As String

Private SelectFName(1000) As String

Private SelectNum As Integer, NextPlaying As Integer

Private PreviousPath As String       '此变量保存用户上次选择的目录,以便再次启动播放器,单击打开时,直接显示的是上次用户打开的目录,此变量的值保存在Windows的注册表中

Private Sub Form_Load()

Dim Tmp1 As String

Dim tmp2 As Integer

Me.Caption = "一个简单的媒体播放器"

Command1.Caption = "打开":Command2.Caption = "停止":Command3.Caption = "退出"

Command2.Enabled = False:Command4.Caption = "上一首&P"

Command5.Caption = "下一首&N":MediaPlayer1.AutoRewind = True

MediaPlayer1.AutoStart = True:MediaPlayer1.ShowStatusBar = True

MediaPlayer1.ShowDisplay = True:MediaPlayer1.AutoSize = False

Combo1.Locked = False

'下面的GetSetting,若存在LastPath项的值,则返回其值,否则返回NoData

PreviousPath = GetSetting("ShinMountain", "PlayMp3", "LastPath", "NoData")

'GetSetting语句从Windows注册表中的应用程序项目返回注册表项设置值。

'DeleteSetting语句在Windows注册表中,从应用程序项目里删除区域或注册表项设置。

'DeleteSetting "ShinMountain"此句可以删除ShinMountain

'SaveSetting语句在Windows注册表中保存或建立应用程序项目。

'这些数据保存在hkey_current_user\software\VB and VBA programs settings下面

'以下代码将上次选择的多媒体文件(保存在WinSysPath中)读出来,SelectFName数组中,并开始播放

Tmp1 = Space(260)

tmp2 = GetSystemDirectory(Tmp1, Len(Tmp1))

WinSysPath = Left(Tmp1, tmp2)

WinSysPath = WinSysPath + "\Inventory.DLL"  'Inventory.DLL文件保存正在播放文件的列表。

On Error GoTo Errhandler   'Inventory.DLL文件不存在,会触发此事件,一般第一次运行时会出现这种情况

SelectNum = 0

NextPlaying = -1

Open WinSysPath For Input As #1

Do While Not EOF(1)

   Line Input #1, SelectFName(SelectNum)

   Combo1.AddItem Mid(SelectFName(SelectNum), InStrRev(SelectFName(SelectNum), "\") + 1)

   SelectNum = SelectNum + 1

Loop

Close #1

MediaPlayer1_EndOfStream (0&)

Errhandler:

If Combo1.ListCount = 0 Then      '可能是第一次运行此软件,Inventory.DLL文件还不存在,或一个文件也没有

   Combo1.List(0) = "没有可选项目"

End If

Combo1.ListIndex = 0    'list数组中第一个显示在文本框中

End Sub

Private Sub Command1_Click()

Dim FName As String

Dim i As Integer, j As Integer

Dim ThePath As String

Dim Tmp As String

CommonDialog1.CancelError = True

On Error GoTo Errhandler

CommonDialog1.Flags = cdlOFNAllowMultiselect    '允许多选,所有选择的文件名之间用空格分隔,保存在FileName

CommonDialog1.InitDir = IIf(PreviousPath = "NoData", "C:\WINDOWS", PreviousPath)

CommonDialog1.Filter="*.mpeg|*.mpeg|*.mpg|*.mpg|*.avi|*.AVI|*.wav|*.WAV|*.mid|*.MID|*.mp3|*.MP3|*.mov|*.MOV|*.dat|*.DAT|*.RMI|*.rmi|*.*|*.*"         '设置扩展名

CommonDialog1.MaxFileSize = 32767      '当同时选择许多文件时默认的260放不下,故要大点,这是最大的值

CommonDialog1.ShowOpen:FName = CommonDialog1.FileName

'下面将选择的若干文件名分开,放在数组SelectFName

If InStr(FName, Chr(32)) = 0 Then          '若只选择一个文件,FName中没有空格,否则文件名之间用空格分隔,若文件在根目录,则路径形如E:\,否则形如E:\abc\123

   SelectNum = 1:SelectFName(0) = FName

   'InStrRev函数是从尾部开始搜索

   ThePath = Left(FName, InStrRev(FName, "\") - 1)

Else

   ThePath = Left(FName, InStr(FName, Chr(32)) - 1) + "\"

   FName = Mid(FName, InStr(FName, Chr(32)) + 1)

   SelectNum = 0:j = 1:Tmp = Space(0)

   For i = 1 To Len(FName)

      If Mid(FName, i, 1) = Chr(32) Then

        SelectFName(SelectNum) = ThePath + Tmp

        SelectNum = SelectNum + 1:Tmp = Space(0)

      Else

        Tmp = Tmp + Mid(FName, i, 1)

      End If

   Next i

   SelectFName(SelectNum) = ThePath + Tmp:SelectNum = SelectNum + 1

End If

'分隔结束

Combo1.Clear

For i = 0 To SelectNum - 1  '此循环将选中的文件显示在组合框中

   Combo1.AddItem Mid(SelectFName(i), InStrRev(SelectFName(i), "\") + 1)

Next i

Combo1.ListIndex = 0        'list数组中第一个显示在文本框中

NextPlaying = 0:Me.Caption = Combo1.Text:MediaPlayer1.FileName = SelectFName(0)

SaveSetting "ShinMountain", "PlayMp3", "LastPath", ThePath

Exit Sub

Errhandler:

  Exit Sub

End Sub

Private Sub Command2_Click()

If Command2.Caption = "停止" Then

   Command2.Caption = "开始":MediaPlayer1.Stop

Else

   Command2.Caption = "停止":MediaPlayer1.Play

End If

End Sub

Private Sub Command3_Click()

'退出之前,将用户选中的文件保存起来,以便下一次启动该程序时,可以直接从保存时的文件开始继续播放,为了做到这一点,在将播放列表写入文件时,必须让正在播放的那个文件首先写入文件中,然后是它后面的,到底后再绕回来,按这个顺序写入。因为程序启动后,是按文件中的列表顺序从前向后进行播放的,故每次启动都首先播放的是退出之前播放的那个文件。

Dim Tmp1 As Integer

On Error GoTo Errhandler '一旦文件不存在,会触发此事件

Tmp1 = 0

Open WinSysPath For Output As #1

Do While Tmp1 < SelectNum

   Print #1, SelectFName(NextPlaying)

   Tmp1 = Tmp1 + 1:NextPlaying = (NextPlaying + 1) Mod SelectNum

Loop

Close #1

Errhandler:

  Unload Me

End Sub

Private Sub Command4_Click()

  NextPlaying = IIf(NextPlaying - 1 < 0, SelectNum - 2, NextPlaying - 2)

  MediaPlayer1_EndOfStream (0&)

End Sub

Private Sub Command5_Click()

MediaPlayer1_EndOfStream (0&)

End Sub

Private Sub Combo1_Click()

NextPlaying = Combo1.ListIndex – 1:MediaPlayer1_EndOfStream (0&)

End Sub

Private Sub Form_QueryUnload(Cancel As Integer, UnloadMode As Integer)

  Command3_Click

End Sub

Private Sub MediaPlayer1_EndOfStream(ByVal Result As Long)  '播放文件结束时触发此事件

On Error GoTo Errhandler     '接下来要播放的文件一旦不存在,会触发此事件,这样做是为了防止程序遇到意外时不至于崩溃,只是忽略这个错误,程序可以继续运行下去

NextPlaying = (NextPlaying + 1) Mod SelectNum

MediaPlayer1.FileName = SelectFName(NextPlaying)

Combo1.ListIndex = NextPlaying:Me.Caption = Combo1.Text

Command2.Enabled = True:Command2.Caption = "停止"

Errhandler:

Exit Sub

End Sub

运行此窗体,其初始界面如图9-1所示。此程序的功能介绍可参见本章的项目界面及其要求部分,这里不再赘述。

习题九

简答题

1Animation控件能播放哪几种格式的多媒体文件?

2AVI动画由什么组成?

3Animation控件有哪些常见的属性?

4Multimedia MCI控件能播放MP3文件吗?

5.简述Multimedia MCI控件上各按钮的功能。

6.怎样打开关闭Multimedia MCI控件所控制的多媒体设备?

7.什么是MCI命令?怎样发送MCI命令?

8.如何在VB的工具箱上显示Multimedia MCI控件的图标?

9Multimedia MCI控件有哪些常见的属性?

10Multimedia MCI控件有哪些事件?

11ActiveMovie控件支持哪些文件格式?

12Windows Media Player控件能播放RM格式的流媒体文件吗?

13Windows Media Player控件有哪些常见的属性?

14.试比较本章介绍的四个控件的异同。

 

 


字数:7625    最后更新:1年以前 [09-06 03:57]我爱钱 修改
本页编辑者:我爱钱  
[前一页]:第九章  [后一页]:第十章
[在本页中加入书签] [收藏本书] [推荐本书]
  17xie论坛 > 本书讨论区 > 本页评论   (共0条)
发表评论

用户名称 匿名发表
评论内容
验证码

关于我们 | 版权声明 | 免责声明 | 诚聘英才 | 联系我们 | 合作伙伴 | 友情链接 | 广告合作 | 提交意见
Copyright © 2007 17xie.com 互联网协同写书平台 京ICP备08002671号