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

📄 mainfrm.cpp

📁 一个用于智能手机的多媒体库适合S60 WinCE的跨平台开发库
💻 CPP
📖 第 1 页 / 共 2 页
字号:
// MainFrm.cpp : implementation of the CMainFrame class//#include "stdafx.h"#include "Osmo4.h"#include <gpac/options.h>#include <gpac/network.h>#include "MainFrm.h"#include <gx.h>#ifdef _DEBUG#define new DEBUG_NEW#undef THIS_FILEstatic char THIS_FILE[] = __FILE__;#endifCChildView::CChildView(){}CChildView::~CChildView(){	/*since the wndproc is overwritten by the terminal, we detach the handle otherwise we get a nice assertion	failure from windows*/	HWND hWnd = Detach();	::PostMessage(hWnd, WM_QUIT, 0, 0);}BEGIN_MESSAGE_MAP(CChildView,CWnd )	//{{AFX_MSG_MAP(CChildView)	//}}AFX_MSG_MAPEND_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// CChildView message handlersBOOL CChildView::PreCreateWindow(CREATESTRUCT& cs) {	if (!CWnd::PreCreateWindow(cs))		return FALSE;	cs.style &= ~WS_BORDER;	cs.lpszClass = AfxRegisterWndClass(CS_HREDRAW|CS_VREDRAW|CS_DBLCLKS, 		NULL, HBRUSH(COLOR_WINDOW+1), NULL);	return TRUE;}/////////////////////////////////////////////////////////////////////////////// CMainFrameIMPLEMENT_DYNAMIC(CMainFrame, CFrameWnd)BEGIN_MESSAGE_MAP(CMainFrame, CFrameWnd)	//{{AFX_MSG_MAP(CMainFrame)	ON_WM_CREATE()	ON_WM_SETFOCUS()	ON_COMMAND(ID_APP_EXIT, OnAppExit)	ON_MESSAGE(WM_OPENURL, Open)	ON_MESSAGE(WM_SETTINGCHANGE, OnSIPChange)	ON_MESSAGE(WM_SETSIZE,OnSetSize)	ON_MESSAGE(WM_NAVIGATE,OnNavigate)	ON_WM_SIZE()	ON_COMMAND(ID_FILE_STEP, OnFileStep)	ON_UPDATE_COMMAND_UI(ID_FILE_STEP, OnUpdateFileStep)	ON_COMMAND(ID_FILE_PAUSE, OnFilePause)	ON_UPDATE_COMMAND_UI(ID_FILE_PAUSE, OnUpdateFilePause)	ON_COMMAND(ID_FILE_STOP, OnFileStop)	ON_UPDATE_COMMAND_UI(ID_FILE_STOP, OnUpdateFileStop)	ON_COMMAND(ID_VIEW_FULLSCREEN, OnViewFullscreen)	ON_UPDATE_COMMAND_UI(ID_VIEW_FULLSCREEN, OnUpdateViewFullscreen)	ON_WM_CLOSE()	ON_COMMAND(ID_VIEW_FIT, OnViewFit)	ON_UPDATE_COMMAND_UI(ID_VIEW_FIT, OnUpdateViewFit)	ON_COMMAND(ID_VIEW_AR_ORIG, OnViewArOrig)	ON_COMMAND(ID_VIEW_AR_FILL, OnViewArFill)	ON_COMMAND(ID_VIEW_AR_43, OnViewAr43)	ON_COMMAND(ID_VIEW_AR_169, OnViewAr169)	ON_COMMAND(ID_NAV_NONE, OnNavNone)	ON_COMMAND(ID_NAV_SLIDE, OnNavSlide)	ON_COMMAND(ID_NAV_RESET, OnNaveReset)	ON_COMMAND_RANGE(ID_NAV_NONE, ID_NAV_EXAMINE, OnSetNavigation)	ON_WM_KEYDOWN()	ON_WM_KEYUP()	ON_COMMAND(ID_VIEW_TIMING, OnViewTiming)	ON_UPDATE_COMMAND_UI(ID_VIEW_TIMING, OnUpdateViewTiming)	ON_WM_INITMENUPOPUP()	//}}AFX_MSG_MAPEND_MESSAGE_MAP()/////////////////////////////////////////////////////////////////////////////// CMainFrame construction/destructionCMainFrame::CMainFrame(){	GXOpenInput();	m_view_timing = 0;	m_restore_fs = 0;}CMainFrame::~CMainFrame(){	GXCloseInput();}void CMainFrame::OnSetFocus(CWnd* pOldWnd){	if (m_restore_fs) {		m_restore_fs = 0;		GetApp()->ShowTaskBar(0);		OnViewFullscreen();	}}int CMainFrame::OnCreate(LPCREATESTRUCT lpCreateStruct){	COsmo4 *app = GetApp();	if (CFrameWnd::OnCreate(lpCreateStruct) == -1)		return -1;	// create a view to occupy the client area of the frame	if (!m_wndView.Create(NULL, NULL, AFX_WS_DEFAULT_VIEW | WS_BORDER,		CRect(0, 0, 0, 0), this, AFX_IDW_PANE_FIRST, NULL))	{		TRACE0("Failed to create view window\n");		return -1;	}	m_wndView.ShowWindow(SW_HIDE);		if (!m_dumbWnd.Create(NULL, NULL, AFX_WS_DEFAULT_VIEW | WS_BORDER,		CRect(0, 0, 0, 0), this, AFX_IDW_PANE_FIRST, NULL))	{		TRACE0("Failed to create dumb window\n");		return -1;	}	m_dumbWnd.SetWindowPos(this, 0, 0, app->m_screen_width, app->m_screen_height-app->m_menu_height, 0L);	m_dumbWnd.ShowWindow(SW_HIDE);	if (!m_progBar.Create(IDD_CONTROL , this) ) {		TRACE0("Failed to create status bar\n");		return -1;      // fail to create	}	m_progBar.UpdateWindow();	m_progBar.SetWindowPos(this, 0, 0, app->m_screen_width, app->m_menu_height, 0L);	m_progBar.ShowWindow(SW_SHOWNORMAL);		m_wndCommandBar.m_bShowSharedNewButton = FALSE;	if (!m_wndCommandBar.Create(this) 			|| !m_wndCommandBar.InsertMenuBar(IDR_MENU)			|| !m_wndCommandBar.AddAdornments()			|| !m_wndCommandBar.LoadBitmap(IDR_MAINFRAME) 		)	{		TRACE0("Failed to create CommandBar\n");		return -1;      // fail to create	}	CToolBarCtrl & toolBar = m_wndCommandBar.GetToolBarCtrl();	TBBUTTON tb;	memset(&tb, 0, sizeof(tb));    tb.idCommand = ID_OPEN_FILE; tb.iBitmap = 0; tb.fsStyle = TBSTYLE_BUTTON; toolBar.AddButtons(1, &tb);    tb.idCommand = 0; tb.iBitmap = 0; tb.fsStyle = TBSTYLE_SEP; toolBar.AddButtons(1, &tb);    tb.idCommand = ID_FILE_PAUSE; tb.iBitmap = 1; tb.fsStyle = TBSTYLE_BUTTON; toolBar.AddButtons(1, &tb);    tb.idCommand = ID_FILE_STEP; tb.iBitmap = 2; tb.fsStyle = TBSTYLE_BUTTON; toolBar.AddButtons(1, &tb);    tb.idCommand = ID_FILE_STOP; tb.iBitmap = 3; tb.fsStyle = TBSTYLE_BUTTON; toolBar.AddButtons(1, &tb);    tb.idCommand = 0; tb.iBitmap = 0; tb.fsStyle = TBSTYLE_SEP; toolBar.AddButtons(1, &tb);		SetIcon(AfxGetApp()->LoadIcon(IDR_MAINFRAME), TRUE);	SetIcon(AfxGetApp()->LoadIcon(IDR_MAINFRAME), FALSE);	SetWindowPos(NULL, 0, 0, app->m_screen_width, app->m_screen_height, 0L);	SetWindowText(_T("Osmo4"));		return 0;}void CMainFrame::SetPauseButton(Bool force_play_button){	CToolBarCtrl & toolBar = m_wndCommandBar.GetToolBarCtrl();	TBBUTTON tb;	memset(&tb, 0, sizeof(tb));    tb.idCommand = ID_FILE_PAUSE; tb.fsStyle = TBSTYLE_BUTTON;		if (force_play_button || GetApp()->m_stoped || gf_term_get_option(GetApp()->m_term, GF_OPT_PLAY_STATE)==GF_STATE_PAUSED) {		tb.iBitmap = 4;	} else {		tb.iBitmap = 1;	}	toolBar.DeleteButton(5);	toolBar.InsertButton(5, &tb);}BOOL CMainFrame::PreCreateWindow(CREATESTRUCT& cs){	if( !CFrameWnd::PreCreateWindow(cs) )		return FALSE;	// TODO: Modify the Window class or styles here by modifying	//  the CREATESTRUCT cs	cs.lpszClass = AfxRegisterWndClass(0);	return TRUE;} /////////////////////////////////////////////////////////////////////////////// CMainFrame diagnostics#ifdef _DEBUGvoid CMainFrame::AssertValid() const{	CFrameWnd::AssertValid();}void CMainFrame::Dump(CDumpContext& dc) const{	CFrameWnd::Dump(dc);}#endif //_DEBUG/////////////////////////////////////////////////////////////////////////////// CMainFrame message handlersBOOL CMainFrame::OnCmdMsg(UINT nID, int nCode, void* pExtra, AFX_CMDHANDLERINFO* pHandlerInfo){	// let the view have first crack at the command	if (m_wndView.OnCmdMsg(nID, nCode, pExtra, pHandlerInfo))		return TRUE;	// otherwise, do default handling	return CFrameWnd::OnCmdMsg(nID, nCode, pExtra, pHandlerInfo);}#define PROGRESS_TIMER	20#define PROGRESS_REFRESH_MS		500void CALLBACK EXPORT ProgressTimer(HWND , UINT , UINT nID , DWORD ){	if (nID != PROGRESS_TIMER) return;	((CMainFrame *) GetApp()->m_pMainWnd)->UpdateTime();}void CMainFrame::UpdateTime(){	u32 now;	COsmo4 *app = GetApp();	if (!app->m_open || app->m_stoped) return;	now = gf_term_get_time_in_ms(app->m_term);	if (!now) return;	if (app->m_can_seek && (now>=app->m_duration + 100)) {		if (gf_term_get_option(app->m_term, GF_OPT_IS_FINISHED)) {			if (app->m_Loop && m_full_screen) {				gf_term_play_from_time(app->m_term, 0, 0);			} else {				OnFileStop();				if (app->m_Loop) OnFilePause();			}			return;		}	} 	if (!m_full_screen) m_progBar.SetPosition(now);}void CMainFrame::CloseURL(){	COsmo4 *app = GetApp();	if (!app->m_open) return;	if (m_view_timing) KillTimer(PROGRESS_TIMER);	gf_term_disconnect(app->m_term);	app->m_open = 0;	app->m_can_seek = 0;	app->m_duration = (u32) -1;	m_progBar.m_prev_time = 0;	m_progBar.SetPosition(0);}void CMainFrame::OnAppExit() {	CloseURL();	PostMessage(WM_QUIT);}void CMainFrame::OnSize(UINT nType, int cx, int cy) {	COsmo4 *app = GetApp();	u32 disp_w, disp_h, c_w, c_h, x, y;	if (m_full_screen) return;	disp_w = app->m_screen_width;	disp_h = app->m_screen_height;	CFrameWnd::OnSize(nType, disp_w, disp_h);	x = y = 0;	disp_h -= app->m_menu_height;	if (m_view_timing) {		disp_h -= app->m_menu_height;		y = app->m_menu_height;		m_progBar.SetWindowPos(this, 0, 0, app->m_screen_width, app->m_menu_height, 0L);		m_progBar.ShowWindow(SW_SHOWNORMAL);	} else {		m_progBar.ShowWindow(SW_HIDE);	}	m_dumbWnd.SetWindowPos(this, 0, y, disp_w, disp_h, 0L);

⌨️ 快捷键说明

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