资源简介
用MFC写的一个小型播放器,aviplayer,能播放一些主流视频
代码片段和文件信息
#include “StdAfx.h“
#include “.\digitalvideo.h“
#include “VideoPlayer.h“
CDigitalvideo::CDigitalvideo(void)
{
m_Open = m_Pause = m_Playing = FALSE;
m_DeviceID = 0;
}
CDigitalvideo::~CDigitalvideo(void)
{
Close ();
}
BOOL CDigitalvideo::GetPause ()
{
return m_Pause;
}
BOOL CDigitalvideo::Open (CString Filename CWnd *pWnd int left int topint widthint height)
{
if (!m_Open){
m_Open = m_Pause = m_Playing = FALSE;
m_DeviceID = 0;
CFileStatus Status;
if (!CFile::GetStatus (Filename Status))
return FALSE;
MCI_DGV_OPEN_PARMS MCIOpen;
MCIOpen.lpstrDeviceType = “avivideo“;
MCIOpen.lpstrElementName = (LPSTR) Filename.GetBuffer (0);
MCIOpen.wDeviceID = NULL;
MCIOpen.hWndParent = pWnd->m_hWnd;
MCIOpen.dwstyle = WS_CHILD | WS_VISIBLE;
if (mciSendCommand (NULL MCI_OPEN MCI_WAIT | MCI_OPEN_TYPE |
MCI_OPEN_ELEMENT | MCI_DGV_OPEN_PARENT | MCI_DGV_OPEN_WS (DWORD)(LPVOID) &MCIOpen))
return FALSE;
m_DeviceID = MCIOpen.wDeviceID;
m_Open = TRUE;
MCI_DGV_SET_PARMS MCISet;
MCISet.dwTimeFormat = MCI_FORMAT_frameS;
if (mciSendCommand (m_DeviceID MCI_SET MCI_SET_TIME_FORMAT (DWORD)(LPVOID) &MCISet)){
Close ();
return FALSE;
}
mciSendCommand (m_DeviceID MCI_SEEK MCI_SEEK_TO_START NULL);
MCI_DGV_PUT_PARMS MCIPut;
MCIPut.rc.left = left;
MCIPut.rc.top = top;
MCIPut.rc.right = width;
MCIPut.rc.bottom = height;
if (mciSendCommand (m_DeviceID MCI_PUT MCI_WAIT | MCI_DGV_PUT_CLIENT |
MCI_DGV_PUT_WINDOW | MCI_DGV_RECT (DWORD)(LPVOID) &MCIPut)){
Close ();
return FALSE;
}
}
return TRUE;
}
void CDigitalvideo::Close (void)
{
if (m_Open){
if (m_Playing || m_Pause)
mciSendCommand (m_DeviceID MCI_STOP NULL NULL);
mciSendCommand (m_DeviceID MCI_CLOSE NULL NULL);
m_Open = m_Pause = m_Playing = FALSE;
m_DeviceID = NULL;
}
}
int CDigitalvideo::GetWidth (void)
{
if (m_Open){
MCI_DGV_WHERE_PARMS MCIWhere;
if (mciSendCommand (m_DeviceID MCI_WHERE MCI_DGV_WHERE_SOURCE
(DWORD)(LPVOID) &MCIWhere)){
return 0;
}
return (int) MCIWhere.rc.right;
}
return 0;
}
int CDigitalvideo::GetHeight (void)
{
if (m_Open){
MCI_DGV_WHERE_PARMS MCIWhere;
if (mciSendCommand (m_DeviceID MCI_WHERE MCI_DGV_WHERE_SOURCE
(DWORD)(LPVOID) &MCIWhere)){
return 0;
}
return (int) MCIWhere.rc.bottom;
}
return 0;
}
BOOL CDigitalvideo::Play (BOOL bLoop BOOL bFullScreen)
{
if (m_Open){
if (Getframe () >= Getframes ())
mciSendCommand (m_DeviceID MCI_SEEK MCI_SEEK_TO_START NULL);
MCI_DGV_PLAY_PARMS MCIPlay;
MCIPlay.dwCallback = NULL;
MCIPlay.dwFrom = Getframe ();
DWORD dwFlags = MCI_FROM;
if (bLoop)
dwFlags |= MCI_DGV_PLAY_REPEAT;
if (bFullScreen)
dwFlags |= MCI_MCIAVI_PLAY_FULLSCREEN;
if (mciSendCommand (m_DeviceID MCI_PLAY dwFlags (DWORD)(LPVOID) &MCIPlay))
return FALSE;
m_Pause = FALSE;
m_Playing = TRUE;
return
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
文件 556032 2009-04-07 14:58 本科毕业设计\测试视频.Avi
文件 5030 2009-05-24 15:19 本科毕业设计\VideoPla
文件 446 2009-05-24 15:19 本科毕业设计\VideoPla
文件 2743 2009-05-24 13:49 本科毕业设计\VideoPla
文件 467 2009-05-24 13:49 本科毕业设计\VideoPla
文件 1517 2009-05-24 13:49 本科毕业设计\VideoPla
文件 1195 2009-05-24 16:12 本科毕业设计\VideoPla
文件 8313 2009-05-24 16:12 本科毕业设计\VideoPla
文件 1458 2009-05-24 13:49 本科毕业设计\VideoPla
文件 140 2009-05-24 13:49 本科毕业设计\VideoPla
文件 59568 2009-05-24 16:14 本科毕业设计\VideoPla
文件 732 2009-05-24 15:19 本科毕业设计\VideoPla
文件 6658 2009-05-24 16:14 本科毕业设计\VideoPla
文件 911 2009-05-24 13:49 本科毕业设计\VideoPla
..A..H. 8192 2009-05-24 16:14 本科毕业设计\VideoPla
文件 1326 2009-05-24 15:13 本科毕业设计\VideoPla
文件 738 2009-05-24 16:08 本科毕业设计\VideoPla
文件 6163 2009-05-24 16:09 本科毕业设计\VideoPla
文件 172032 2009-05-24 16:14 本科毕业设计\VideoPla
文件 367 2009-05-24 13:49 本科毕业设计\VideoPla
文件 700 2009-05-24 13:49 本科毕业设计\VideoPla
文件 21630 2003-04-02 03:36 本科毕业设计\VideoPla
文件 89600 2008-11-13 19:32 本科毕业设计\文档资料\AVI格式介绍.doc
文件 36352 2009-05-24 16:18 本科毕业设计\文档资料\MCI.doc
目录 0 2009-05-24 16:14 本科毕业设计\VideoPla
目录 0 2009-05-24 16:14 本科毕业设计\VideoPla
目录 0 2009-05-24 16:14 本科毕业设计\VideoPla
目录 0 2009-05-24 16:15 本科毕业设计\文档资料
目录 0 2009-05-24 13:22 本科毕业设计
----------- --------- ---------- ----- ----
............此处省略2个文件信息
- 上一篇:道格拉斯压缩算法C++实现
- 下一篇:银行家算法模拟实现C++版
评论
共有 条评论