实验8数字视频播放器15修改报告Word文档格式.docx
《实验8数字视频播放器15修改报告Word文档格式.docx》由会员分享,可在线阅读,更多相关《实验8数字视频播放器15修改报告Word文档格式.docx(18页珍藏版)》请在冰豆网上搜索。
IDC_STATIC
视频信息
IDC_FRAMES
视频文件名:
IDC_DEMENSION
播放速度:
Button
IDC_OPEN
打开
是否静音:
IDC_PLAY
播放
视频帧数:
IDC_PAUSE
暂停
视频尺寸:
IDC_PRE
上一帧
IDC_VIDEO_NAME
IDC_NEXT
下一帧
IDC_PLAY_SPEED
IDC_STOP
停止
现在在应用程序中插入一个对话框资源(插入—资源—对话框),用来设置播放速度,其ID设为IDD_SPEED:
IDD_SPEED对话框控件属性表
EditBox
IDC_SPEED1
IDOK
确定
IDCANCEL
取消
还需象应用程序中插入一个对话框资源,用做视频输出窗口,ID为IDD_DISPLAY。
2.制作菜单
插入一个菜单资源,将ID设为IDR_MAINFRAME。
IDR_MAINFRAME中的菜单项
菜单标题
菜单项标题
文件
关闭
IDC_OK
选项
静音
IDC_SOUND
全屏
IDC_FULLSCREEN
循环播放
IDC_LOOP
视频速度
IDC_SPEED
在你的主对话框的属性中的菜单项中,选中IDR_MAINFRAME
现在编译一下,就得到了我们所要的界面。
3.添加消息处理函数(查看——建立类向导)
在C***Dlg中需要添加的消息处理函数
消息
BN_CLICKED
COMMAND
C***Dlg
WM_TIMER
然后为IDD_SPEED对话框资源添加一个intm_speed成员变量(选择IDD_SPEED对话框资源,右键选中建立类向导,新建类CSpeed,在该类中选中成员变量一项,选中IDC_SPEED1双击添加成员变量intm_speed)
三完成应用程序功能设计
1.将已设计好的类Cvideo加到你的工程中来(先把文件video.cpp和video.h拷贝到工程文件目录,在fileview中分别选择源文件和头文件目录,右键选择将文件添加到工程中,把这两个文件添加进工程目录中),并使C***Dlg的头文件包含该类的头文件(#include“video.h”;
#include“speed.h”),然后在C***Dlg类的声明中加入以下代码:
protected:
CVideom_Video;
boolm_bIsOpen;
boolm_bSound;
boolm_bLoop;
boolm_bFullScreen;
CDialog*display;
2.初始化你的主对话框
在OnInitDlialog()中//TODO:
Addextrainitializationhere后加入以下代码:
display=newCDialog;
display->
Create(IDD_DISPLAY);
SetTimer(1,100,NULL);
3.完成消息函数OnTimer,OnOpen,OnPlay,OnStop,OnPause,OnPre,OnNext,OnSound,OnLoop,OnFullScreen,OnSpeed
voidCVideoPlayerDlg:
:
OnTimer(UINTnIDEvent)
{
//TODO:
Addyourmessagehandlercodehereand/orcalldefault
CWnd*m_pWnd=GetDlgItem(IDC_PLAY);
m_pWnd->
EnableWindow(m_bIsOpen);
m_pWnd=GetDlgItem(IDC_PAUSE);
m_pWnd=GetDlgItem(IDC_STOP);
m_pWnd=GetDlgItem(IDC_NEXT);
m_pWnd=GetDlgItem(IDC_PRE);
if(m_bIsOpen)
{
CStringInfo;
Info.Format("
当前播放帧数:
%d"
m_Video.GetFrame());
m_pWnd=GetDlgItem(IDC_DISPLAY);
//获得静态图像控件位置
CClientDCdc(m_pWnd);
CRectrect;
CBrushbrush(COLORREF(0)),*OldBrush;
OldBrush=(CBrush*)dc.SelectObject(brush);
m_pWnd->
GetClientRect(rect);
//获得静态图像控件大小
dc.SetTextColor(COLORREFRGB(0,0,255));
dc.SetBkColor(COLORREFRGB(0,0,0));
dc.FillRect(rect,&
brush);
CSizesize=dc.GetTextExtent(Info);
//获得文本尺寸
dc.TextOut((rect.Width()-size.cx)/2,(rect.Height()-size.cy)/2,Info);
dc.SelectObject(&
OldBrush);
CStringstr;
str.Format("
m_Video.GetSpeed());
SetDlgItemText(IDC_PLAY_SPEED,str);
m_Video.GetFrames());
SetDlgItemText(IDC_FRAMES,str);
if(m_Video.GetSound())
str=_T("
否"
);
else
是"
SetDlgItemText(IDC_PLAY_SOUND,str);
}
CDialog:
OnTimer(nIDEvent);
}
OnOpen()
Addyourcontrolnotificationhandlercodehere
CStringFilter,str;
Filter="
视频文件(*.AVI)|*.AVI||"
;
//得到窗口尺寸
CRectrect;
this->
GetWindowRect(rect);
CFileDialogFileDlg(true,NULL,NULL,OFN_HIDEREADONLY,Filter);
if(FileDlg.DoModal()==IDOK)//单击文件选择对话框的“确定”键
if(!
m_Video.Open(FileDlg.GetPathName(),display,0,0))//打开视频文件
{
MessageBox("
不能打开文件!
"
"
Error"
MB_OK|MB_ICONSTOP);
return;
}
//将显示屏幕定位在主对话框的下方,并根据视频大小确定屏幕大小
intBorder,Caption;
Border=GetSystemMetrics(SM_CXSIZEFRAME);
Caption=GetSystemMetrics(SM_CYCAPTION);
display->
SetWindowPos(this,rect.left+30,rect.bottom+30,
m_Video.GetWidth()+Border,m_Video.GetHeight()+Caption+Border,
SWP_SHOWWINDOW);
ShowWindow(true);
SetWindowText(FileDlg.GetFileName());
SetDlgItemText(IDC_VIDEO_NAME,FileDlg.GetFileName());
%d×
m_Video.GetWidth(),m_Video.GetHeight());
SetDlgItemText(IDC_DEMENSION,str);
m_bIsOpen=true;
OnPlay()
m_Video.Play(m_bLoop,m_bFullScreen);
OnStop()
m_Video.Stop();
OnPause()
m_Video.Pause();
OnPre()
m_Video.Backward
(1);
OnNe