首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> VC >> 關於VC++

VC6.0 打造多媒體播放器:ActiveMovieControl 實戰

     編輯:關於VC++

專案概覽

利用 VC6 內建 ActiveX 元件 ActiveMovieControl Object(quartz.dll),快速建立支援 MP3/WMA/WAV/AVI/MPEG 等格式的播放器,具備播放/暫停/停止/音量/全螢幕/重複播放功能。

播放器介面佈局

播放器執行畫面

建立步驟

  1. MFC AppWizard (exe) → Dialog Based → 專案名 MediaPlayer
  2. 對話框編輯器:移除「確定」,保留「取消」改為「Exit」;新增 9 個按鈕與 2 個靜態文字
  3. 專案 → 加入元件 → Registered ActiveX Controls → ActiveMovieControl Object → 拉入對話框 → ClassWizard 加入變數 CActiveMovie3 m_ActiveMovie
  4. 為各按鈕加入 BN_CLICKED 處理函式

核心功能程式碼

開啟媒體檔

void OnOpen() {
    char filter[] = "MP3|*.mp3|WMA|*.wma|AVI|*.avi|MPG|*.mpg|所有檔|*.*||";
    CFileDialog dlg(TRUE, NULL, NULL, OFN_HIDEREADONLY, filter);
    if (dlg.DoModal() == IDOK) {
        CString path = dlg.GetPathName(); path.MakeUpper();
        m_ActiveMovie.SetFileName(path);
    }
}

播放/暫停/停止/音量/全螢幕

void OnPlay()   { m_ActiveMovie.Run(); SetTimer(0,20,NULL); }
void OnPause()  { m_ActiveMovie.Pause(); }
void OnStop()   { m_ActiveMovie.Stop(); KillTimer(0); }
void OnUpper()  { long v=m_ActiveMovie.GetVolume(); m_ActiveMovie.SetVolume(v+100); }
void OnLower()  { long v=m_ActiveMovie.GetVolume(); m_ActiveMovie.SetVolume(v-100); }
void OnFull()   { m_ActiveMovie.SetFullScreenMode(TRUE); m_ActiveMovie.SetMovieWindowSize(SW_SHOWMAXIMIZED); m_ActiveMovie.Run(); }

重複播放邏輯(Timer 檢查位置)

BOOL isRepeat = FALSE;
void OnRepeat() {
    isRepeat = !isRepeat;
    SetDlgItemText(IDC_STATIC2, isRepeat ? "Status:Repeat" : "Status:Normal");
}
void OnTimer(UINT nID) {
    if (m_ActiveMovie.GetCurrentPosition() == 0 && isRepeat)
        m_ActiveMovie.Run();
    CDialog::OnTimer(nID);
}

美化:圓形按鈕 CRoundButton

  1. 加入 RoundButton.h/.cpp(繼承 CButton,Owner-draw 圓形繪製)
  2. ClassWizard 為各按鈕建立變數,手動將型別從 CButton 改為 CRoundButton
  3. 標頭檔 #include "RoundButton.h"

作者資訊

王凱明,復旦大學,doose@etang.com

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved