?? 用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 + -