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

📄 sample.final

📁 brew 培训的sample source code
💻 FINAL
📖 第 1 页 / 共 2 页
字号:
			  pi->pHelp = NULL;
			  break;
		  case STATUS_GIVENAME:
			  if(!pi->pText)
				 pi->pText = (AECHAR*)MALLOC(NAME_LEN);
			  if(!pi->pText)
				  return FALSE;
			  ITEXTCTL_GetText(pi->pDogName,pi->pText,NAME_LEN/2);
			  ITEXTCTL_SetActive(pi->pDogName,FALSE);
			  ITEXTCTL_Release(pi->pDogName);
			  IMENUCTL_Release(pi->pSoftkey);
			  pi->pDogName = NULL;
			  pi->pSoftkey = NULL;
			  break;
		  // lab 10
		  case STATUS_ENTER:
			  IIMAGE_Release(pi->pImage);
			  pi->pImage = NULL;
			  IMEDIA_Stop(pi->pMedia);
			  IMEDIA_Release(pi->pMedia);
			  pi->pMedia = NULL;
			  break;
		  // end of lab 10
		  }
		  return TRUE;
	  case EVT_APP_RESUME:
		  switch(pi->status)
		  {
		  case STATUS_MAINMENU:
			  BuildMainMenu(pi);
			  break;
		  case STATUS_ABOUT:
			  DisplayAbout(pi);
			  break;
		  case STATUS_HELP:
			  DisplayHelp(pi);
			  break;
		  case STATUS_GIVENAME:
			  SetDogName(pi);
			  break;
		  // lab 11
		  case STATUS_ENTER:
			  PlayMusic(pi);
			  PlayImage(pi);
			  break;
		  // end of lab 11
		  }
		  return TRUE;
	  // lab 12
	  case EVT_APP_NO_SLEEP:  //If there is none key been pressed after a long time, the action speed will be slower. It will be called in order to show the application is working. 
		  return TRUE;
	  // end of lab 12
      default:
         break;
   }
   return FALSE;
}

static boolean SampleApp_Init(SampleApp *pi)
{
	ISHELL_GetDeviceInfo(pi->a.m_pIShell,&pi->info);

	pi->status = 0;
	pi->pMenu = NULL;
	pi->pDogName = NULL;
	pi->pSoftkey = NULL;
    pi->pText = NULL;
	pi->pAbout = NULL;
	pi->pHelp = NULL;
	// lab 4
	pi->pMedia = NULL;
	pi->pImage = NULL;
	// end of lab 4

	return TRUE;
}

static void SampleApp_Free(SampleApp *pi)
{
	if(pi->pMenu)
		IMENUCTL_Release(pi->pMenu);
	if(pi->pDogName)
		ITEXTCTL_Release(pi->pDogName);
	if(pi->pSoftkey)
		IMENUCTL_Release(pi->pSoftkey);
	if(pi->pText)
		FREE(pi->pText);
	if(pi->pAbout)
		ISTATIC_Release(pi->pAbout);
	if(pi->pHelp)
		ISTATIC_Release(pi->pHelp);
	// lab 5
	if(pi->pMedia)
		IMEDIA_Release(pi->pMedia);
	if(pi->pImage)
		IIMAGE_Release(pi->pImage);
	// end of lab 5
}

static void DisplaySplash(SampleApp *pi)
{
    AECHAR        szText[12];

    ISHELL_LoadResString(pi->a.m_pIShell,SAMPLE_RES_FILE,IDS_SAMPLE,szText,sizeof(szText));
    IDISPLAY_DrawText(pi->a.m_pIDisplay,    // Display instance
                     AEE_FONT_BOLD,       // Use BOLD font
                     szText,              // Text - Normally comes from resource
                     -1,                  // -1 = Use full string length
                     0,                   // Ignored - IDF_ALIGN_CENTER
                     0,                   // Ignored - IDF_ALIGN_MIDDLE
                     NULL,                // No clipping
                     IDF_ALIGN_CENTER | IDF_ALIGN_MIDDLE);
    IDISPLAY_Update (pi->a.m_pIDisplay);
	pi->status = STATUS_SPLASH;
}

static void BuildMainMenu(SampleApp *pi)
{
	if(ISHELL_CreateInstance(pi->a.m_pIShell,AEECLSID_MENUCTL,(void**)&pi->pMenu) != SUCCESS)
		return ;

	IMENUCTL_SetTitle(pi->pMenu,SAMPLE_RES_FILE,IDS_TITLE,NULL);

	IMENUCTL_AddItem(pi->pMenu,SAMPLE_RES_FILE,IDS_NAME,ID_NAME,NULL,0);
	IMENUCTL_AddItem(pi->pMenu,SAMPLE_RES_FILE,IDS_ENTER,ID_ENTER,NULL,0);
	IMENUCTL_AddItem(pi->pMenu,SAMPLE_RES_FILE,IDS_HELP,ID_HELP,NULL,0);
	IMENUCTL_AddItem(pi->pMenu,SAMPLE_RES_FILE,IDS_ABOUT,ID_ABOUT,NULL,0);

	IMENUCTL_SetActive(pi->pMenu,TRUE);
	pi->status = STATUS_MAINMENU;
}

static void SetDogName(SampleApp *pi)
{
	AEERect       rect;

	pi->status = STATUS_GIVENAME;

	if(!pi->pDogName)
	{
		if(ISHELL_CreateInstance(pi->a.m_pIShell,AEECLSID_TEXTCTL,(void**)&pi->pDogName) != SUCCESS)
			return;
		if(ISHELL_CreateInstance(pi->a.m_pIShell,AEECLSID_SOFTKEYCTL,(void**)&pi->pSoftkey) != SUCCESS)
		{
			pi->pDogName = NULL;
			return ;
		}
	}

	IMENUCTL_SetActive(pi->pMenu,FALSE);
	IDISPLAY_ClearScreen(pi->a.m_pIDisplay);

	ITEXTCTL_SetTitle(pi->pDogName,SAMPLE_RES_FILE,IDS_DOG_NAME,NULL);
	ITEXTCTL_SetProperties(pi->pDogName,TP_FRAME);
	ITEXTCTL_SetMaxSize(pi->pDogName,5);
	SETAEERECT(&rect,0,20,pi->info.cxScreen,pi->info.cyScreen/2);
	ITEXTCTL_SetRect(pi->pDogName,&rect);
	if(pi->pText)
		ITEXTCTL_SetText(pi->pDogName,pi->pText,-1);
	ITEXTCTL_SetCursorPos(pi->pDogName,TC_CURSOREND);

	ITEXTCTL_SetSoftKeyMenu(pi->pDogName,pi->pSoftkey);
	ITEXTCTL_SetInputMode(pi->pDogName,AEE_TM_FIRST_OEM+1);
	IMENUCTL_AddItem(pi->pSoftkey,SAMPLE_RES_FILE,IDS_OK,ID_OK,NULL,0);

	ITEXTCTL_SetActive(pi->pDogName,TRUE);
}

// lab 5
static void DisplayDog(SampleApp *pi)
{
	pi->status = STATUS_ENTER;
	pi->flag = 0;
	pi->TickTime = 0;

	IMENUCTL_SetActive(pi->pMenu,FALSE);
	PlayMusic(pi);
	PlayImage(pi);
}
// end of lab 5

static void DisplayAbout(SampleApp *pi)
{
	AEERect       rect;
    AECHAR        title[12];
	AECHAR        data[80];

	pi->status = STATUS_ABOUT;
	IMENUCTL_SetActive(pi->pMenu,FALSE);
	IDISPLAY_ClearScreen(pi->a.m_pIDisplay );
	if(!pi->pAbout)
	{
		if(ISHELL_CreateInstance(pi->a.m_pIShell,AEECLSID_STATIC,(void**)&pi->pAbout) != SUCCESS)
			return ;
	}
	SETAEERECT(&rect,0,0,pi->info.cxScreen,pi->info.cyScreen);
    ISTATIC_SetRect(pi->pAbout,&rect);

	ISHELL_LoadResString(pi->a.m_pIShell,SAMPLE_RES_FILE,IDS_ABOUT,title,sizeof(title));
	ISHELL_LoadResString(pi->a.m_pIShell,SAMPLE_RES_FILE,IDS_ABOUT_DATA,data,sizeof(data));
	ISTATIC_SetText(pi->pAbout,title,data,AEE_FONT_BOLD,AEE_FONT_NORMAL);
	ISTATIC_SetActive(pi->pAbout,TRUE);
	ISTATIC_Redraw(pi->pAbout);
}

static void DisplayHelp(SampleApp *pi)
{
	AEERect       rect;
	AECHAR        title[24];
	IImage        *pImage;

	IMENUCTL_SetActive(pi->pMenu,FALSE);
	IDISPLAY_ClearScreen(pi->a.m_pIDisplay );
	if(!pi->pHelp)
	{
		if(ISHELL_CreateInstance(pi->a.m_pIShell,AEECLSID_STATIC,(void**)&pi->pHelp) != SUCCESS)
			return ;
	}
	ISTATIC_SetProperties(pi->pHelp,ST_ICONTEXT);
	SETAEERECT(&rect,0,0,pi->info.cxScreen,pi->info.cyScreen);
    ISTATIC_SetRect(pi->pHelp,&rect);

	ISHELL_LoadResString(pi->a.m_pIShell,SAMPLE_RES_FILE,IDS_HELP,title,sizeof(title));
	pImage = ISHELL_LoadResImage(pi->a.m_pIShell,SAMPLE_RES_FILE,IDB_HELP);
	ISTATIC_SetText(pi->pHelp,title,(AECHAR*)pImage,AEE_FONT_NORMAL,AEE_FONT_NORMAL);
	ISTATIC_Redraw(pi->pHelp);
	IIMAGE_Release(pImage);
	pi->status = STATUS_HELP;
}

// lab 8
static void MediaCallback(SampleApp *pi,AEEMediaCmdNotify *data)
{
	switch(data->nCmd)
	{
	case MM_CMD_PLAY:
		switch(data->nStatus)
		{
		case MM_STATUS_DONE:
			pi->TickTime = 0;
			if(!pi->flag)          //in order to play the music again
				IMEDIA_Play(pi->pMedia);
			break;
		case MM_STATUS_TICK_UPDATE:
			pi->TickTime++;
			break;
		case MM_STATUS_START:
		    IMEDIA_FastForward(pi->pMedia,pi->TickTime*1000);
			break;
		}
		break;
	default:
		break;
	}
}
// end of lab 8

// lab 6
static void PlayImage(SampleApp *pi)
{
	uint16        x,y;
	AEEImageInfo  ImageInfo;

	  IDISPLAY_ClearScreen(pi->a.m_pIDisplay);
	  if(pi->pText)
			IDISPLAY_DrawText(pi->a.m_pIDisplay,    // Display instance
							   AEE_FONT_BOLD,       // Use BOLD font
							   pi->pText,             
							   -1,                  // -1 = Use full string length
							   0,                   // Ignored - IDF_ALIGN_CENTER
							   0,                   // Ignored - IDF_ALIGN_MIDDLE
							   NULL,                // No clipping
							   IDF_ALIGN_CENTER);

	  pi->pImage = ISHELL_LoadResImage(pi->a.m_pIShell,SAMPLE_RES_FILE,IDB_DOG);
	  if(pi->pImage)
	  {
		  IIMAGE_GetInfo(pi->pImage,&ImageInfo);
		  x = (pi->info.cxScreen - ImageInfo.cx)/2;
		  y = (pi->info.cyScreen - ImageInfo.cy)/2;

		  IIMAGE_Start(pi->pImage,x,y);
	  }

	  IDISPLAY_Update(pi->a.m_pIDisplay);
}
// end of lab 6

// lab 7
static void PlayMusic(SampleApp *pi)
{
      AEEMediaData  music;

	  if(ISHELL_CreateInstance(pi->a.m_pIShell,AEECLSID_MEDIAMIDI,(void**)&pi->pMedia) != SUCCESS)
		  return ;
	  music.clsData = MMD_FILE_NAME;
	  music.pData = "Sample.mid";
	  music.dwSize = 0;
	  IMEDIA_SetMediaData(pi->pMedia,&music);
	  IMEDIA_RegisterNotify(pi->pMedia,(PFNMEDIANOTIFY)MediaCallback,pi);
	  IMEDIA_Play(pi->pMedia);
}
// end of lab 7

⌨️ 快捷键说明

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