热情软件屋

 

用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回答。

 
把这个问题推荐给朋友
   
   
您的意见类别
您的名字
您的电子邮件
您的建议(请尽可能详细)
 
 

版权所有 1997-2008 热情软件屋
如果您有任何建议和意见, 请给我发个电子邮件 askpro@china-askpro.com
Web Designed by ZebraStudio