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

📄 progressbar.cpp

📁 一个用于智能手机的多媒体库适合S60 WinCE的跨平台开发库
💻 CPP
字号:
// ProgressBar.cpp : implementation file//#include "stdafx.h"#include "Osmo4.h"#include "ProgressBar.h"#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endif/////////////////////////////////////////////////////////////////////////////// ProgressBar dialogProgressBar::ProgressBar(CWnd* pParent /*=NULL*/)	: CDialog(ProgressBar::IDD, pParent){	//{{AFX_DATA_INIT(ProgressBar)	//}}AFX_DATA_INIT	m_grabbed = 0;	m_range_invalidated = 0;}void ProgressBar::DoDataExchange(CDataExchange* pDX){	CDialog::DoDataExchange(pDX);	//{{AFX_DATA_MAP(ProgressBar)	DDX_Control(pDX, IDC_TIME, m_Time);	DDX_Control(pDX, IDC_SLIDER, m_Slider);	//}}AFX_DATA_MAP}BEGIN_MESSAGE_MAP(ProgressBar, CDialog)	//{{AFX_MSG_MAP(ProgressBar)	ON_WM_SIZE()	ON_WM_HSCROLL()	//}}AFX_MSG_MAPEND_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// ProgressBar message handlers#define TEXT_RIGHT_PAD	2void ProgressBar::OnSize(UINT nType, int cx, int cy) {	u32 tw;	CDialog::OnSize(nType, cx, cy);	if (!m_Slider.m_hWnd) return;	RECT rc;	m_Time.GetClientRect(&rc);	tw = rc.right-rc.left;	rc.left = cx - tw - TEXT_RIGHT_PAD;	rc.right = cx - TEXT_RIGHT_PAD;	m_Time.MoveWindow(&rc);	m_Slider.GetClientRect(&rc);	rc.left = 0;	rc.right = cx - tw - TEXT_RIGHT_PAD;	m_Slider.MoveWindow(&rc);}void ProgressBar::OnHScroll(UINT nSBCode, UINT nPos, CScrollBar* pScrollBar) {	COsmo4 *app = GetApp();	if (pScrollBar->GetDlgCtrlID() == IDC_SLIDER) {		if (!app->m_can_seek) return;		switch (nSBCode) {		case TB_LINEUP:		case TB_LINEDOWN:		case TB_PAGEUP:		case TB_PAGEDOWN:		case TB_THUMBPOSITION:		case TB_THUMBTRACK:		case TB_TOP:		case TB_BOTTOM:			m_grabbed = 1;			break;		case TB_ENDTRACK:			if (!app->m_open) {				SetPosition(0);			} else {				u32 seek_to = m_Slider.GetPos();				gf_term_play_from_time(app->m_term, seek_to, 0);			}			m_grabbed = 0;			return;		}	}	CDialog::OnHScroll(nSBCode, nPos, pScrollBar);}void ProgressBar::SetPosition(u32 now){	TCHAR swText[20];	u32 nb_s, nb_m;	COsmo4 *app = GetApp();	if (m_range_invalidated) {		if (app->m_can_seek) {			m_Slider.SetRangeMin(0);			m_Slider.SetRangeMax(app->m_duration);			m_Slider.ShowWindow(SW_SHOWNORMAL);			m_Slider.EnableWindow(TRUE);		} else {			m_Slider.ShowWindow(SW_SHOWNORMAL);			m_Slider.EnableWindow(FALSE);					}		m_range_invalidated = 0;	}	if (now==m_prev_time) return;	if (now<m_prev_time) m_prev_time = 0;		if (!m_prev_time || (m_prev_time + 500 <= now)) {		m_FPS = gf_term_get_framerate(app->m_term, 0);		m_prev_time = now;	}	nb_s = now/1000;	nb_m = nb_s/60;	nb_s -= nb_m*60;	wsprintf(swText, _T("%02d:%02d FPS %02.2f"), nb_m, nb_s, m_FPS);	m_Time.SetWindowText(swText);		if (!m_grabbed) m_Slider.SetPos(now);}

⌨️ 快捷键说明

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