Microsoft Visual C# 是世界上最流行的編程語言,利用 Visual C# 的最新版本 Visual C# .Net,您能夠快速、有效地開發基於 Windows 窗體的應用程序,還可以為嵌入了 Microsoft Windows Media? Player 9 SerIEs ActiveX 控件的應用程序添加新鮮、有趣而又非常實用的功能。
按照本文介紹的步驟,您將創建一個基於 Windows 窗體的基本應用程序,並在其中嵌入 Player 控件。您創建的示例應用程序具有如下特點:
· 創建 DirectShow 控件的一個實例。 · 利用 Windows Media Player 主互操作程序集提供組件對象模型 (COM) 互操作性。 · 允許用戶打開並播放 Windows Media 文件,尤其是文件擴展名為 .wma 或 .wmv 的文件。 · 創建供用戶播放、暫停和停止數字媒體內容的傳輸控制按鈕。 · 顯示當前數字媒體文件的標題。 · 演示如何使用 Player 對象模型,包括使用屬性、方法和事件的示例。
過濾器以樹型進行排列,這棵樹稱為過濾器樹,通過過濾器樹管理器(Filter Graph Manager,簡稱FGM)進行管理。使用FGM應用程序可以通過使用Microsoft Windows Media Player控件間接控制過濾器樹,還可以通過調用COM接口方法直接控制。DirectShow過濾器樹(參閱圖1)由從源到目標渲染器的有向過濾器序列組成,所有這些通過輸入和輸出過濾器引腳連接。過濾器引腳協商它們將支持哪些媒體類型。FGM控制樹過濾器之間的多媒體數據流。因為DirectShow有一個靈活的、可重配置的過濾器樹體系結構,因此DirectShow可以使用同樣的軟件成分支持多種媒體類型的回放和分流。開發人員還可以通過編寫自己的過濾器擴展DirectShow多媒體支持。
private void UpdateStatusBar() { switch (m_CurrentStatus) { case MediaStatus.None : statusBarPanel1.Text = "Stopped"; break; case MediaStatus.Paused : statusBarPanel1.Text = "Paused "; break; case MediaStatus.Running: statusBarPanel1.Text = "Running"; break; case MediaStatus.Stopped: statusBarPanel1.Text = "Stopped"; break; } if (m_objMediaPosition != null) { int s = (int) m_objMediaPosition.Duration; int h = s / 3600; int m = (s - (h * 3600)) / 60; s = s - (h * 3600 + m * 60); statusBarPanel2.Text = String.Format("{0:D2}:{1:D2}:{2:D2}", h, m, s); s = (int) m_objMediaPosition.CurrentPosition; h = s / 3600; m = (s - (h * 3600)) / 60; s = s - (h * 3600 + m * 60); statusBarPanel3.Text = String.Format("{0:D2}:{1:D2}:{2:D2}", h, m, s); } else { statusBarPanel2.Text = "00:00:00"; statusBarPanel3.Text = "00:00:00"; } }