?? ericmeidaplayerdlg.cpp
字號:
// EricMeidaPlayerDlg.cpp : 實現文件
//
#include "stdafx.h"
#include "EricMeidaPlayer.h"
#include "EricMeidaPlayerDlg.h"
#ifdef _DEBUG
#define new DEBUG_NEW
#endif
// CEricMeidaPlayerDlg 對話框
CEricMeidaPlayerDlg::CEricMeidaPlayerDlg(CWnd* pParent /*=NULL*/)
: CDialog(CEricMeidaPlayerDlg::IDD, pParent)
{
m_hIcon = AfxGetApp()->LoadIcon(IDR_MAINFRAME);
}
void CEricMeidaPlayerDlg::DoDataExchange(CDataExchange* pDX)
{
CDialog::DoDataExchange(pDX);
}
BEGIN_MESSAGE_MAP(CEricMeidaPlayerDlg, CDialog)
//}}AFX_MSG_MAP
ON_BN_CLICKED(IDC_BTN_OPEN, &CEricMeidaPlayerDlg::OnBnClickedBtnOpen)
ON_BN_CLICKED(IDC_BTN_PLAY, &CEricMeidaPlayerDlg::OnBnClickedBtnPlay)
ON_BN_CLICKED(IDC_BTN_PAUSE, &CEricMeidaPlayerDlg::OnBnClickedBtnPause)
ON_BN_CLICKED(IDC_BTN_STOP, &CEricMeidaPlayerDlg::OnBnClickedBtnStop)
ON_BN_CLICKED(IDC_BTN_FULL, &CEricMeidaPlayerDlg::OnBnClickedBtnFull)
ON_STN_CLICKED(IDC_WND_VIDEO, &CEricMeidaPlayerDlg::OnStnClickedWndVideo)
ON_MESSAGE(WM_GRAPHNOTIFY, OnNotifyMedia)
ON_WM_TIMER()
END_MESSAGE_MAP()
// CEricMeidaPlayerDlg 消息處理程序
BOOL CEricMeidaPlayerDlg::OnInitDialog()
{
CDialog::OnInitDialog();
// 設置此對話框的圖標。當應用程序主窗口不是對話框時,框架將自動
// 執行此操作
SetIcon(m_hIcon, TRUE); // 設置大圖標
SetIcon(m_hIcon, FALSE); // 設置小圖標
//啟動定時器,用于更新媒體播放進度
SetTimer(1,1000,NULL);
return TRUE; // 除非將焦點設置到控件,否則返回 TRUE
}
//打開視頻文件
void CEricMeidaPlayerDlg::OnBnClickedBtnOpen()
{
DWORD dwMax = 0;
//得到媒體播放窗口
CWnd *pVideoWnd = GetDlgItem(IDC_WND_VIDEO);
//得到進度條窗口
CProgressCtrl *pPrgWnd = (CProgressCtrl*)GetDlgItem(IDC_PRG_VIDEO);
//定義媒體播放文件名
CString strFileName;
TCHAR szFilters[]= _T("windows media video Files (*.wmv)|*.wmv|video Files (*.avi)|*.avi|All Files (*.*)|*.*||");
CFileDialog fileDlg (TRUE, _T("Open video files"), _T("*.wmv"),
OFN_FILEMUSTEXIST , szFilters, this);
//打開文件選擇對話框
if( fileDlg.DoModal () !=IDOK )
{
return;
}
//得到要播放的視頻文件名
strFileName = fileDlg.GetPathName();
//打開視頻文件
if (m_VideoControl.OpenFile(strFileName,pVideoWnd->m_hWnd,m_hWnd))
{
//設置視頻尺寸
m_VideoControl.FitVideoWindow(1.0);
//得到視頻文件時間長度
m_VideoControl.GetDuration(dwMax);
//設置進度條范圍
pPrgWnd->SetRange(0,dwMax);
pPrgWnd->SetPos(0);
}
else
{
AfxMessageBox(L"Can't play the video,because the system can't find some codec program!");
}
}
//播放視頻
void CEricMeidaPlayerDlg::OnBnClickedBtnPlay()
{
m_VideoControl.VideoRun();
}
//暫停視頻
void CEricMeidaPlayerDlg::OnBnClickedBtnPause()
{
m_VideoControl.VideoPause();
}
//停止視頻
void CEricMeidaPlayerDlg::OnBnClickedBtnStop()
{
m_VideoControl.VideoStop();
}
//全屏
void CEricMeidaPlayerDlg::OnBnClickedBtnFull()
{
m_VideoControl.FullScreen();
}
//視頻窗口單擊事件
//用于從全屏狀態回到正常狀態
void CEricMeidaPlayerDlg::OnStnClickedWndVideo()
{
if (m_VideoControl.GetFullScreenStatus())
{
//切換到正常狀態
m_VideoControl.FullScreen();
}
}
//媒體播放事件通知
LRESULT CEricMeidaPlayerDlg::OnNotifyMedia(WPARAM WParam, LPARAM LParam)
{
long lEventCode;
if (m_VideoControl.GetMediaEvent(&lEventCode))
{
//收到播放結束事件
if (lEventCode == EC_COMPLETE)
{
if (m_VideoControl.VideoStop())
{
//
}
}
}
return (LRESULT)0;
}
//WM_TIMER,定時器處理函數
void CEricMeidaPlayerDlg::OnTimer(UINT_PTR nIDEvent)
{
//得到進度條窗口
CProgressCtrl *pPrgWnd = (CProgressCtrl*)GetDlgItem(IDC_PRG_VIDEO);
DWORD dwPos = 0;
//得到媒體當前播放進度
m_VideoControl.GetCurrentPos(dwPos);
//設置進度條位置
pPrgWnd->SetPos(dwPos);
CDialog::OnTimer(nIDEvent);
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -