用VB放VCD时自定义窗口显示
编号:QA002435
建立日期: 2000年1月13日 最后修改日期:2000年1月13日
所属类别:
李勇利:
操作系统:Windows
编程工具:VB6
问题:我想知道,用VB放VCD时怎样可让,显示窗口全屏。具体用什么能实现,可否自定义窗口显示,用怎样的语句。请写一下代码。谢谢!!
回答:
本文摘自《计算机应用文摘》99年第二期
Visual Basic 中 自 制 VCD 播 放 器
硬件能力的不断提高给使用解压软件播放VCD带来了福音,但使用过解压软件的人可能都会有一种同样的感觉:大多数的解压软件都有选择驱动器和选择文件的步骤,操作起来十分麻烦。于是,我就用Visual Basic 5.0编制了一个播放VCD的程序,可以交由稍懂WINDOWS操作的人员使用,至于那些选取驱动器和文件的操作都交给计算机来做。
建立调节播放进度的滑动条 按照第一步的步骤建立Sspanel2,设置它的"Bevelouter"属性为"1-Inset"。在表单工具盒中选择(Slider),在Sspanel2中拉出一个方框(SliderTime)。再为SliderTime制作两个Label标记开始时间和结束时间,设置它们的Name属性为Lstart和Lend,Caption属性为"00:00,大小可自己调整。
建立播放按钮 在表单工具盒中选择(Mmcontrol),在FormVCD中拉出一个方框(MCPlayVCD),点击鼠标右键调出快捷菜单并选择"Properties"设置其属性。在"General"页中去掉"PrevVisible"、"NextVisible"、"BackVisible"、"StepVisible"和"RecordVisible"前的选中符号,按确认键退出。
建立重置按钮 在表单工具盒中选择 (Sscommand),在FormVCD的合适位置建立重置按钮(Sscommand1)。设置其Caption属性为"重置",字体大小为12。 编写代码
建立程序模块文件 在"Insert"菜单中选择"Module",写入以下代码:
GENERAL DECLARATIONS
Declare Function GetDriveType Lib "kernel32"_
Alias "GetDriveTypeA" (ByVal nDrive As _
String) As Long
Declare Function GetProfileString Lib "kernel32"_
Alias "GetProfileStringA" (ByVal_
lpAppName As String, ByVal lpKeyName_
As String, ByVal lpDefault As String, ByVal_
lpReturnedString As String, ByVal nSize As _
Long) As Long
定义公有变量:
GENERAL DECLARATIONS
Public Nowfen As Integer, Nowmiao As Integer
加入FormVCD的Reload过程。在"Insert"菜单中选择"Procedure…",在NAME框中填入"Reload"后退出。代码如下:
Public Sub Reload()
Dim Drivename As String, I As Integer, A As Integer
Nowfen = 0
Nowmiao = 0
MCPlayVCD.Command = "Close"
Drivename = ""
' 查找CD-ROM的驱动器号
For I = 65 To 72
If GetDriveType(Chr$(I) & ":") = 5 Then
Drivename = Chr$(I) & ":"
Exit For
End If
Next
' 查找电影文件(*.DAT)的驱动程序
Buffer$ = Space(128)
Buffersize = 128
Dev = GetProfileString("Mci extensions", "dat",_
"Not Found", Buffer$, Buffersize)
' 确认是否插入了VCD碟片
On Error GoTo err
File1.Path = Drivename + "\mpegav"
On Error GoTo 0
File1.Pattern = "*.dat"
MCPlayVCD.DeviceType = Dev_Type$
MCPlayVCD.filename = File1.Path + "\" + File1.List(0)
MCPlayVCD.Command = "open"
MCPlayVCD.TimeFormat = vbMCIFormatTmsf
MCPlayVCD.UpdateInterval = 0
SliderTime.Value = 0
SliderTime.Min = 0
SliderTime.Max = MCPlayVCD.Length \ 1000
Fen = MCPlayVCD.Length \ 60000
Lnow.Caption = "00:00"
Lsum.Caption = Format$(Fen * 100 + (MCPlayVCD.Length \ 1000 - Fen * 60), "00:00")
Lend.Caption = Lsum.Caption
Exit Sub
err:
End
End Sub
编写其它控件的代码
FormVCD的Load过程(装入):
Private Sub Form_Load()
FormVCD.Reload
End Sub
MCPlayVCD的PauseClick 过程(单击暂停键):
Private Sub MCPlayVCD_PauseClick(Cancel As Integer)
MCPlayVCD.UpdateInterval = 0
End Sub
MCPlayVCD的PlayClick 过程(单击播放键):
Private Sub MCPlayVCD_PlayClick(Cancel As Integer)
MCPlayVCD.UpdateInterval = 1000
End Sub
MCPlayVCD的StatusUpdate过程(定时器):
Private Sub MCPlayVCD_StatusUpdate()
If Nowmiao = 59 Then
Nowmiao = 0
Nowfen = Nowfen + 1
Else
Nowmiao = Nowmiao + 1
End If
SliderTime.Value = SliderTime.Value + 1
Lnow.Caption = Format$(Nowfen * 100 + _Nowmiao, "00:00")
If Lnow.Caption >= Lsum.Caption Then
Lnow.Caption = Lsum.Caption
MCPlayVCD.UpdateInterval = 0
End If
End Sub
MCPlayVCD的StopClick过程(单击停止键):
Private Sub MCPlayVCD_StopClick(Cancel_As Integer)
MCPlayVCD.UpdateInterval = 0
MCPlayVCD.To = MCPlayVCD.Start
MCPlayVCD.Command = "Seek"
Lnow.Caption = "00:00"
SliderTime.Value = 0
End Sub
SliderTime的Change过程(滑动条改变):
Private Sub SliderTime_Change()
MCPlayVCD.UpdateInterval = 1000
MCPlayVCD.From = SliderTime.Value * 1000
MCPlayVCD.Command = "play"
Nowfen = SliderTime.Value \ 60
Nowmiao = SliderTime.Value - Nowfen * 60
If Nowfen = SliderTime.Max / 60 And Nowmiao_>= SliderTime.Value - SliderTime.Value / 60 Then
MCPlayVCD.UpdateInterval = 0
Else
MCPlayVCD.UpdateInterval = 1000
End If
End Sub
SSCommand1的Click 过程(单击重置按钮):
Private Sub SSCommand1_Click()
FormVCD.Reload
End Sub
FormVCD的Unload过程(装入):
Private Sub Form_Unload(Cancel As Integer)
MCPlayVCD.Command = "Close"
End Sub
编译、运行
按F5键可直接运行,若无误可选择"File"菜单中的"Make EXE File …"将其编译成可执行文件在WINDOWS中直接运行。本程序可用于所有的解压软件,以上程序在Visual Basic 5.0和Windows 95中运行通过。
建立显示屏上的显示文字 在表单工具盒中选择(Label),在Sspanel1中拉出一个方框,设置其属性Name为"Lasum",Autosize为TRUE,Caption为"电影总长",字体样式为"BOLD"(粗体),字体大小为10,字体颜色为绿色;按同样方法在第一个Label的右方建立另一个Label,设置其属性Name为"Lsum",Autosize为TRUE,Caption为"00:00",字体样式为"BOLD"(粗体),字体大小为10,字体颜色为绿色;再在这两个Label的下方各建立一个Label,分别设置它们的属性Name为"Lanow"和"Lnow",Caption为"播放进度"和"00:00",其余属性相同。
建立一个显示屏 在表单工具盒中选择(Sspanel),在FormVCD上拉出一个矩形方框(Sspanel1),点击鼠标右键调出快捷菜单并选择"Properties"设置其属性。在"3D Effects"页中选择"Bevelouter"设置其为"1-Inset"(下凹),在"Colors"页中设置"BackColor"属性为黑色。
图中可以看到操作界面仅有几个按钮和一个滑动条,如果光驱内装有正确的VCD碟片就可以直接按(播放键)进行播放,同时屏幕上显示有电影的总长度和已播放的进度,还可通过调节滑动条播放VCD碟片上的任意部分。具体的制作步骤如下:
进入Visual Basic 5.0中,在表单工具盒中点击鼠标右键,在弹出菜单中选择"Custom Controls …",在"Available Controls"栏中选中" Microsoft MultiMedia Control"、"Microsoft Windows Common Control"和"Sheridan 3D Controls",按确认键退出。设置FormVCD的Caption属性为"VCD播放机"。在表单工具盒中选择(FilelistBox),在FormVCD上建立一个文件列表框(ListFiles),设置它的Pattern属性为"*.DAT",Visible属性为FALSE(不可见)。
此问题由Zhao Yu回答。
| |
|
|
| |
|
|