⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 filmdlg.cpp

📁 《VC++ 编程技巧与示例 .rar》各个示例代码绝对可用
💻 CPP
字号:
// FilmDlg.cpp : implementation file
//

#include "stdafx.h"
#include "ControlTest.h"
#include "FilmDlg.h"

#ifdef _DEBUG
#define new DEBUG_NEW
#undef THIS_FILE
static char THIS_FILE[] = __FILE__;
#endif

/////////////////////////////////////////////////////////////////////////////
// CFilmDlg dialog


CFilmDlg::CFilmDlg(CWnd* pParent /*=NULL*/)
	: CDialog(CFilmDlg::IDD, pParent)
{
	//{{AFX_DATA_INIT(CFilmDlg)
	//}}AFX_DATA_INIT
}
void CFilmDlg::DoDataExchange(CDataExchange* pDX)
{
	CDialog::DoDataExchange(pDX);
	//{{AFX_DATA_MAP(CFilmDlg)
	DDX_Control(pDX, IDC_SLIDER, m_Slider);
	DDX_Control(pDX, IDC_STOP, m_Stop);
	DDX_Control(pDX, IDC_PROGRESS, m_Progress);
	DDX_Control(pDX, IDC_PLAY, m_Play);
	DDX_Control(pDX, IDC_ANIMATE, m_Animate);
	//}}AFX_DATA_MAP
}


BEGIN_MESSAGE_MAP(CFilmDlg, CDialog)
	//{{AFX_MSG_MAP(CFilmDlg)
	ON_BN_CLICKED(IDC_BROWSE, OnBrowse)
	ON_BN_CLICKED(IDC_PLAY, OnPlay)
	ON_BN_CLICKED(IDC_STOP, OnStop)
	ON_WM_DESTROY()
	ON_WM_TIMER()
	ON_WM_HSCROLL()
	//}}AFX_MSG_MAP
END_MESSAGE_MAP()

/////////////////////////////////////////////////////////////////////////////
// CFilmDlg message handlers

void CFilmDlg::OnBrowse() 
{
	// TODO: Add your control notification handler code here
	CFileDialog fd(TRUE,NULL,NULL,
					OFN_HIDEREADONLY|OFN_OVERWRITEPROMPT,
					"Avi files(*.avi)|*.avi|All files(All files)|*.*||"
				   );
	if(fd.DoModal()==IDOK)
	{
		m_FileName=fd.GetPathName();
		m_Animate.Open(m_FileName);
		m_CurFrame=0;
		m_Progress.SetPos(10-m_CurFrame);
		m_Slider.SetPos(m_CurFrame);
	}
}


void CFilmDlg::OnPlay() 
{
	// TODO: Add your control notification handler code here
	if(m_FileName=="")
	{
		return;
	}
	if(m_CurFrame==10)
	{
		m_CurFrame=0;
	}
	m_Animate.Seek(m_CurFrame);
	SetTimer(1,2,NULL);
}

void CFilmDlg::OnStop() 
{
	// TODO: Add your control notification handler code here
	m_Animate.Stop();
	m_Animate.Seek(0);
	m_Progress.SetPos(10);
	m_Slider.SetPos(0);
	m_CurFrame=0;
	KillTimer(1);
}

void CFilmDlg::OnTimer(UINT nIDEvent) 
{
	// TODO: Add your message handler code here and/or call default
	m_CurFrame++;
	m_Animate.Play(m_CurFrame,m_CurFrame,0);
	m_Progress.SetPos(10-m_CurFrame);
	m_Slider.SetPos(m_CurFrame);
	if(m_CurFrame==10)
	{
		m_CurFrame=0;
	}
	CDialog::OnTimer(nIDEvent);
}

BOOL CFilmDlg::OnInitDialog() 
{
	CDialog::OnInitDialog();
	
	// TODO: Add extra initialization here
	m_Play.LoadBitmaps(IDB_PLAY_UP,IDB_PLAY_DOWN,IDB_PLAY_FOCUS);
	m_Play.SizeToContent();
	m_Stop.LoadBitmaps(IDB_STOP_UP,IDB_STOP_DOWN,IDB_STOP_FOCUS);
	m_Stop.SizeToContent();
	m_CurFrame=0;
	m_Progress.SetRange(0,10);
	m_Progress.SetPos(10-m_CurFrame);
	m_Slider.SetRange(0,10);
	m_Slider.SetPos(m_CurFrame);
	m_FileName="";
	return TRUE;  // return TRUE unless you set the focus to a control
	              // EXCEPTION: OCX Property Pages should return FALSE
}

void CFilmDlg::OnDestroy() 
{
	CDialog::OnDestroy();
	
	// TODO: Add your message handler code here
	m_Animate.Close();
}

void CFilmDlg::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) 
{
	// TODO: Add your message handler code here and/or call default
	if(m_FileName=="")
	{
		return;
	}
	m_CurFrame=m_Slider.GetPos();
	m_Animate.Seek(m_CurFrame);
	m_Progress.SetPos(10-m_CurFrame);
	CDialog::OnHScroll(nSBCode, nPos, pScrollBar);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -