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

📄 mymedia.h

📁 手机开发环境BREW实例
💻 H
字号:
//常量定义
#define MP_MAX_STRLEN			32	//缓冲区最大长度
#define MP_HEADER_CY			16	//屏幕最上方距离图像显示区的高度

////进度条的相关标量
#define MP_PROGBAR_DX_DIV		3
#define MP_PROGBAR_DY_DIV		2
#define MP_PROGBAR_DX_OFFSET	4
#define MP_CLR_PROG_FILL		MAKE_RGB(0, 128, 192)

#define MP_SEEK_TIME			10000    // 10 seconds
#define MP_VOLUME_STEP			25
#define MP_PROG_TIMER			2000

//Splash Screen的时间,单位:毫秒。
#define MP_SPLASH_TIMER			750

//自定义事件,建立IMedia对象
#define EVT_CREATEMEDIA       EVT_USER

//进度条属性
typedef struct CProgCtl
{
   IShell *          m_pIShell;
   IDisplay *        m_pIDisplay;
   IStatic *         m_pTitle;
   AEERect           m_rectMain;
   AEERect           m_rectBar;
}CProgCtl;

//播放屏幕属性描述
typedef struct CPlayerWin
{
	AEEApplet       a;				//强制AEEApplet数据元素首先出现
	int             m_cxWidth;		//手机屏幕宽度
	int             m_cyHeight;		//手机屏幕高度
	uint16          m_nColorDepth;	//手机屏幕色深
	int             m_nNChSize;		//大字尺寸
	int             m_nLChSize;		//正常字尺寸

	AEECallback     m_cbRedraw;		//重画窗口回调函数句柄
   
	IStatic *       m_pTitle;		//静态文本框
	AECHAR          m_szText[MP_MAX_STRLEN];//标题内容。

	AEERect         m_rectHdr;		//头图象所站的范围。

	IImage *        m_pIdleImage;	//图象占位符。
	AEERect			m_pIdleRect;
  
	char *          m_pszFile;		//被CImagePlayer分配的文件名
	CProgCtl        m_ProgCtl;		//进度条

	IMenuCtl *      m_pPlayerMenu;	//播放采单控件
	uint16          m_wPct;			//进度条被填充的位置

	AEEMediaData    m_md;             // MD 数据
	IMedia *        m_pMedia;         // MD 对象

	flg				m_bActive:1;

	uint32          m_dwTotalTime;    // 总的回放时间
	uint32          m_dwPlayPos;      // 现行回放位置
	uint16          m_wVolume;        // 音量
	flg             m_bPlayRec:1;
	flg             m_bProgTimer:1;
}CPlayerWin;

//宏定义
#define MP_RELEASEIF(p)					MP_FreeIF((IBase **)&(p))
#define MP_ISEVTKEY(e)                 ((e) == EVT_KEY)//是按键处理事件吗?
#define MP_ISCLR(e)                    (MP_ISEVTKEY(e) && wParam == AVK_CLR)//
#define MP_ISEVTCMD(e)                 ((e) == EVT_COMMAND)
#define MP_ISCMD(e, c)                 (MP_ISEVTCMD(e) && (c) == wParam)//用户定义的键

//IBASE_Release封装,此函数用于减少IBase接口对象的引用计数
//IBase是派生所有其它 BREW AEE接口的底层接口。
static void MP_FreeIF(IBase ** ppif)
{
   if (ppif && *ppif)
   {
      IBASE_Release(*ppif);
      *ppif = NULL;
   }
}

//程序初始化、启动、及资源释放函数
static boolean AutoImage_InitAppData(IApplet* po);
static void AutoImage_FreeAppData(IApplet* po);
static void AutoImage_DrawSplash(CPlayerWin * pme);
static void AutoImage_RedrawNotify(CPlayerWin * pme);
static void AutoImage_Redraw(CPlayerWin * pme, boolean bDefer);
static void AutoImage_CancelRedraw(CPlayerWin * pme);

//进度条相关函数
static boolean CProgCtl_Init(CProgCtl * pme, AEERect * pRectMain);
static void CProgCtl_DrawHist(CProgCtl * pme, uint16 wPct);
static void CProgCtl_SetPos(CProgCtl * pme, AECHAR * psz, uint16 wPct);
static void CPlayerWin_UpdateProgCtl(CPlayerWin * pme, int nCmd, int nSubCmd, uint16 wResID);
static void CPlayerWin_ProgTimerNotify(CPlayerWin * pme);

//窗口设置函数
static void CPlayerWin_Enable(CPlayerWin * po);
static void CPlayerWin_Redraw(CPlayerWin * po);

//媒体设置函数
static void CPlayerWin_MediaNotify(void * pUser, AEEMediaCmdNotify * pCmdNotify);
static boolean CPlayerWin_SetMediaData(CPlayerWin * pme, AEEMediaData * pmd);
static boolean CPlayerWin_IsPause(CPlayerWin * pme);
static void CMediaPlayer_PlayFile(CPlayerWin * pme, const char * pszFile);

//播放屏幕的事件处理函数。
static boolean CPlayerWin_HandleEvent(CPlayerWin * po, AEEEvent eCode, uint16 wParam, uint32 dwParam);

//菜单处理函数
static void MP_SetMenuAttr(IMenuCtl * pMenu, AEECLSID clsMenu, uint16 nColorDepth, AEERect * pRect, uint32 dwProps);
static boolean MP_AddMenuItem(IMenuCtl * pMenu, uint16 wTextID, AECHAR * pText, uint16 wImageID, uint16 wItemID, uint32 dwData);

//助手函数。
static void MP_FitStaticText(IDisplay * pd, IStatic * ps, AEEFont font, AECHAR * pszText);
static char * MP_GetFileName(const char * psz);
static void MP_FrameRect(IDisplay * pd, AEERect * pRect);
static void MP_DrawImage(IImage * pImage, AEERect * pRect, boolean bCenter);

⌨️ 快捷键说明

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