📄 mymedia.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 + -