📄 用vb放vcd时自定义窗口显示.txt
字号:
硬 件 能 力 的 不 断 提 高 给 使 用 解 压 软 件 播 放 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( 不 可 见 ) 。
<END>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -