操作系統:Windows 7
軟件環境:Visual C++ 2008 SP1
本次目的:在VC2008下Windows Media Player控件的用法之進階篇
在上次的編寫Media Player播放器後,這次我們來實現對音視頻的控制,比如:播放、暫停、停止、快進、音量、進度條等等。首先我們在對話框上放置如下按鈕,如圖:
在對話框頭文件中,添加播放器的一些頭文件和聲明對象。
-
-
-
#pragma once
-
#include "afxwin.h"
-
#include "CWMPPlayer4.h" //播放頭文件
-
#include "CWMPControls.h" //控制頭文件
-
#include "CWMPSettings.h" //設置頭文件
-
#include "CWMPMedia.h" //媒體頭文件
-
#include "afxcmn.h"
-
-
class CTestDlg : public CDialog
-
{
-
-
public:
-
CWMPPlayer4 m_Player;
-
CWMPControls m_control;
-
CWMPSettings m_setting;
-
CWMPMedia m_media;
-
CProgressCtrl m_progress;
-
};
對窗體添加事件,添加一個OnTimer()事件。對Media Player添加播放改變PlayStateChange()事件。具體代碼如下:
-
-
BOOL CTestDlg::OnInitDialog()
-
{
-
-
m_control=static_cast<CWMPControls>(m_Player.get_controls());
-
m_setting=m_Player.get_settings();
-
return TRUE;
-
}
-
void CTestDlg::OnBnClickedButton1()
-
{
-
m_control.play();
-
}
-
void CTestDlg::OnBnClickedButton6()
-
{
-
CString fileName;
-
CFileDialog fileDialog( TRUE,NULL,NULL,OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT,_T("音頻、視頻文件(*.*)|*.*||"),this);
-
if (fileDialog.DoModal() == IDOK)
-
{
-
fileName=fileDialog.GetPathName();
-
m_Player.put_URL(fileName);
-
}
-
m_media=static_cast<CWMPMedia>(m_Player.newMedia(fileName));
-
m_progress.SetRange(0,(int)m_media.get_duration());
-
m_progress.SetPos(0);
-
}
-
void CTestDlg::OnBnClickedButton2()
-
{
-
m_control.pause();
-
}
-
void CTestDlg::OnBnClickedButton3()
-
{
-
m_control.stop();
-
}
-
void CTestDlg::OnBnClickedButton4()
-
{
-
m_control.fastForward();
-
}
-
void CTestDlg::OnBnClickedButton5()
-
{
-
m_control.fastReverse();
-
}
-
void CTestDlg::OnBnClickedButton7()
-
{
-
m_Player.put_fullScreen(1);
-
}
-
void CTestDlg::OnBnClickedButton8()
-
{
-
m_setting.put_volume(m_setting.get_volume()-10);
-
}
-
void CTestDlg::OnBnClickedButton9()
-
{
-
m_setting.put_volume(m_setting.get_volume()+10);
-
}
-
void CTestDlg::PlayStateChangeOcx1(long NewState)
-
{
-
if (NewState==3)
-
SetTimer(1,1000,NULL);
-
else if (NewState==1)
-
{
-
m_progress.SetPos(0);
-
KillTimer(1);
-
}
-
else
-
KillTimer(1);
-
}
-
void CTestDlg::OnTimer(UINT_PTR nIDEvent)
-
{
-
-
if (nIDEvent != 1)
-
return;
-
m_progress.SetPos(m_progress.GetPos()+1);
-
CDialog::OnTimer(nIDEvent);
-
}
效果如下:
Media player控件常用屬性
屬性/方法名: |
說明: |
[基本屬性 ] |
|
URL:String; |
指定媒體位置,本機或網絡地址 |
uiMode:String; |
播放器界面模式,可爲Full, Mini, None, Invisible |
playState:integer; |
播放狀態,1=停止,2=暫停,3=播放,6=正在緩衝,9=正在連接,10=準備就緒 |
enableContextMenu:Boolean; |
啓用/禁用右鍵菜單 |
fullScreen:boolean; |
是否全屏顯示 |
[controls ] |
wmp.controls //播放器基本控制 |
controls.play; |
播放 |
controls.pause; |
暫停 |
controls.stop; |
停止 |
controls.currentPosition:double; |
當前進度 |
controls.currentPositionString:string; |
當前進度,字符串格式。如“00:23” |
controls.fastForward; |
快進 |
controls.fastReverse; |
快退 |
controls.next; |
下一曲 |
controls.previous; |
上一曲 |
[settings ] |
wmp.settings //播放器基本設置 |
settings.volume:integer; |
音量,0-100 |
settings.autoStart:Boolean; |
是否自動播放 |
settings.mute:Boolean; |
是否靜音 |
settings.playCount:integer; |
播放次數 |
[currentMedia ] |
wmp.currentMedia //當前媒體屬性 |
currentMedia.duration:double; |
媒體總長度 |
currentMedia.durationString:string; |
媒體總長度,字符串格式。如“03:24” |
currentMedia.getItemInfo(const string); |
獲 取當前媒體信息"Title"=媒體標題,"Author"=藝術家,"Copyright"=版權信息,"Description"=媒體內容描 述,"Duration"=持續時間(秒),"FileSize"=文件大小,"FileType"=文件類型,"sourceURL"=原始地址 |
currentMedia.setItemInfo(const string); |
通過屬性名設置媒體信息 |
currentMedia.name:string; |
同 currentMedia.getItemInfo("Title") |
[currentPlaylist ] |
wmp.currentPlaylist //當前播放列表屬性 |
currentPlaylist.count:integer; |
當前播放列表所包含媒體數 |
currentPlaylist.Item[integer]; |
獲取或設置指定項目媒體信息,其子屬性同wmp.currentMedia
|
表格轉載自:http://blog.csdn.net/jomakzhao/archive/2007/05/11/1604076.aspx