📄 mymedia.step3
字号:
break;
}
return TRUE;
// A key was pressed. Look at the wParam above to see which key was pressed. The key
// codes are in AEEVCodes.h. Example "AVK_1" means that the "1" key was pressed.
case EVT_KEY:
//When the user press clear key and the current page is not the main menu, it should be returned to the main menu.
if((wParam == AVK_CLR) && (pMe->status != STATUS_MAINMENU))
{
if(pMe->pAbout)
{
ISTATIC_Release(pMe->pAbout);
pMe->pAbout = NULL;
}
if(pMe->pHelp)
{
ISTATIC_Release(pMe->pHelp);
pMe->pHelp = NULL;
}
if(pMe->pImage)
{
IIMAGE_Stop(pMe->pImage);
IIMAGE_Release(pMe->pImage);
pMe->pImage = NULL;
//lab 2
IMEDIA_Stop(pMe->pMedia);
IMEDIA_Release(pMe->pMedia);
pMe->pMedia = NULL;
pMe->flag = 1; // do not replay the music
// end of lab 2
}
IMENUCTL_Redraw(pMe->pMenu);
IMENUCTL_SetActive(pMe->pMenu,TRUE);
pMe->status = STATUS_MAINMENU;
return TRUE;
}
else //When the user press clear key and the current page is main menu, the application should exit.
return FALSE;
case EVT_COMMAND:
if(IMENUCTL_IsActive(pMe->pMenu))
{
item = IMENUCTL_GetSel (pMe->pMenu);
switch(item)
{
case ID_ENTER: // Display the running dog on the screen with the music
DisplayDog(pMe);
break;
case ID_HELP:
DisplayHelp(pMe);
break;
case ID_ABOUT: // Display the information about this application
DisplayAbout(pMe);
break;
default:
break;
}
return TRUE;
}
else
return FALSE;
// If nothing fits up to this point then we'll just break out
default:
break;
}
return FALSE;
}
// this function is called when your application is starting up
boolean mymedia_InitAppData(mymedia* pMe)
{
// Get the device information for this handset.
// Reference all the data by looking at the pMe->DeviceInfo structure
// Check the API reference guide for all the handy device info you can get
pMe->DeviceInfo.wStructSize = sizeof(pMe->DeviceInfo);
ISHELL_GetDeviceInfo(pMe->a.m_pIShell,&pMe->DeviceInfo);
// The display and shell interfaces are always created by
// default, so we'll asign them so that you can access
// them via the standard "pMe->" without the "a."
pMe->pIDisplay = pMe->a.m_pIDisplay;
pMe->pIShell = pMe->a.m_pIShell;
pMe->status = 0;
pMe->pMenu = NULL;
pMe->pAbout = NULL;
pMe->pHelp = NULL;
pMe->pImage = NULL;
// lab 1
pMe->pMedia = NULL;
// end of lab 1
// if there have been no failures up to this point then return success
return TRUE;
}
// this function is called when your application is exiting
void mymedia_FreeAppData(mymedia* pMe)
{
if(pMe->pMenu)
IMENUCTL_Release(pMe->pMenu);
if(pMe->pAbout)
ISTATIC_Release(pMe->pAbout);
if(pMe->pHelp)
ISTATIC_Release(pMe->pHelp);
if(pMe->pImage)
IIMAGE_Release(pMe->pImage);
// lab 1
if(pMe->pMedia)
IMEDIA_Release(pMe->pMedia);
// end of lab 1
}
static void BuildMainMenu(mymedia* pMe)
{
if(ISHELL_CreateInstance(pMe->pIShell,AEECLSID_MENUCTL,(void**)&pMe->pMenu) != SUCCESS)
return ;
IMENUCTL_SetTitle(pMe->pMenu,MYMEDIA_RES_FILE,IDS_TITLE,NULL);
IMENUCTL_AddItem(pMe->pMenu,MYMEDIA_RES_FILE,IDS_ENTER,ID_ENTER,NULL,0);
IMENUCTL_AddItem(pMe->pMenu,MYMEDIA_RES_FILE,IDS_HELP,ID_HELP,NULL,0);
IMENUCTL_AddItem(pMe->pMenu,MYMEDIA_RES_FILE,IDS_ABOUT,ID_ABOUT,NULL,0);
IMENUCTL_SetActive(pMe->pMenu,TRUE);
pMe->status = STATUS_MAINMENU;
}
static void DisplayDog(mymedia* pMe)
{
pMe->status = STATUS_ENTER;
IMENUCTL_SetActive(pMe->pMenu,FALSE);
// lab 2
pMe->flag = 0;
pMe->TickTime = 0;
PlayMusic(pMe);
// end of lab 2
PlayImage(pMe);
}
static void DisplayAbout(mymedia* pMe)
{
AEERect rect;
AECHAR title[12];
AECHAR data[80];
pMe->status = STATUS_ABOUT;
IMENUCTL_SetActive(pMe->pMenu,FALSE);
IDISPLAY_ClearScreen(pMe->pIDisplay );
if(!pMe->pAbout)
{
if(ISHELL_CreateInstance(pMe->pIShell,AEECLSID_STATIC,(void**)&pMe->pAbout) != SUCCESS)
return ;
}
SETAEERECT(&rect,0,0,pMe->DeviceInfo.cxScreen,pMe->DeviceInfo.cyScreen);
ISTATIC_SetRect(pMe->pAbout,&rect);
ISHELL_LoadResString(pMe->pIShell,MYMEDIA_RES_FILE,IDS_ABOUT,title,sizeof(title));
ISHELL_LoadResString(pMe->pIShell,MYMEDIA_RES_FILE,IDS_ABOUT_DATA,data,sizeof(data));
ISTATIC_SetText(pMe->pAbout,title,data,AEE_FONT_BOLD,AEE_FONT_NORMAL);
ISTATIC_SetActive(pMe->pAbout,TRUE);
ISTATIC_Redraw(pMe->pAbout);
}
static void DisplayHelp(mymedia* pMe)
{
AEERect rect;
AECHAR title[24];
IImage *pImage;
IMENUCTL_SetActive(pMe->pMenu,FALSE);
IDISPLAY_ClearScreen(pMe->pIDisplay );
if(!pMe->pHelp)
{
if(ISHELL_CreateInstance(pMe->pIShell,AEECLSID_STATIC,(void**)&pMe->pHelp) != SUCCESS)
return ;
}
ISTATIC_SetProperties(pMe->pHelp,ST_ICONTEXT);
SETAEERECT(&rect,0,0,pMe->DeviceInfo.cxScreen,pMe->DeviceInfo.cyScreen);
ISTATIC_SetRect(pMe->pHelp,&rect);
ISHELL_LoadResString(pMe->pIShell,MYMEDIA_RES_FILE,IDS_HELP,title,sizeof(title));
pImage = ISHELL_LoadResImage(pMe->pIShell,MYMEDIA_RES_FILE,IDB_HELP);
ISTATIC_SetText(pMe->pHelp,title,(AECHAR*)pImage,AEE_FONT_BOLD,AEE_FONT_NORMAL);
ISTATIC_Redraw(pMe->pHelp);
IIMAGE_Release(pImage);
pMe->status = STATUS_HELP;
}
// lab 2
static void MediaCallback(mymedia* pMe,AEEMediaCmdNotify *data)
{
switch(data->nCmd)
{
case MM_CMD_PLAY:
switch(data->nStatus)
{
case MM_STATUS_DONE:
pMe->TickTime = 0;
if(!pMe->flag) //in order to play the music again
IMEDIA_Play(pMe->pMedia);
break;
case MM_STATUS_TICK_UPDATE:
pMe->TickTime++;
break;
case MM_STATUS_START:
IMEDIA_FastForward(pMe->pMedia,pMe->TickTime*1000);
break;
}
break;
default:
break;
}
}
// end of lab 2
static void PlayImage(mymedia* pMe)
{
uint16 x,y;
AEEImageInfo ImageInfo;
IDISPLAY_ClearScreen(pMe->pIDisplay);
pMe->pImage = ISHELL_LoadResImage(pMe->pIShell,MYMEDIA_RES_FILE,IDB_DOG);
if(pMe->pImage)
{
IIMAGE_GetInfo(pMe->pImage,&ImageInfo);
x = (pMe->DeviceInfo.cxScreen - ImageInfo.cx)/2;
y = (pMe->DeviceInfo.cyScreen - ImageInfo.cy)/2;
IIMAGE_Start(pMe->pImage,x,y);
}
IDISPLAY_Update(pMe->pIDisplay);
}
// lab 2
static void PlayMusic(mymedia* pMe)
{
AEEMediaData music;
if(ISHELL_CreateInstance(pMe->pIShell,AEECLSID_MEDIAMIDI,(void**)&pMe->pMedia) != SUCCESS)
return ;
music.clsData = MMD_FILE_NAME;
music.pData = "sample.mid";
music.dwSize = 0;
IMEDIA_SetMediaData(pMe->pMedia,&music);
IMEDIA_RegisterNotify(pMe->pMedia,(PFNMEDIANOTIFY)MediaCallback,pMe);
IMEDIA_Play(pMe->pMedia);
}
// end of lab 2
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -