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

📄 vencurschedule.c

📁 BREW 2.0.1平台开发的课程表
💻 C
📖 第 1 页 / 共 4 页
字号:
		pMe->CpITextCtl = NULL;
	}

	if(pMe->TpITextCtl != NULL)
	{
		ITEXTCTL_Release(pMe->TpITextCtl);
		pMe->TpITextCtl = NULL;
	}

	if(pMe->RpITextCtl != NULL)
	{
		ITEXTCTL_Release(pMe->RpITextCtl);
		pMe->RpITextCtl = NULL;
	}

	if(pMe->MpITextCtl != NULL)
	{
		ITEXTCTL_Release(pMe->MpITextCtl);
		pMe->MpITextCtl = NULL;
	}	
}
/************************************************************************/
/* Add the ImageTitle Function                                          */
/************************************************************************/
static  void VenCurSchedule_ImageTitle(VenCurSchedule* pMe,uint16 wReslID,int x,int y)    
{
	pMe->pScreen = IDISPLAY_GetDestination(pMe->a.m_pIDisplay);
	pMe->pImage = ISHELL_LoadResBitmap(pMe->a.m_pIShell, VENCURSCHEDULE_RES_FILE, wReslID);
	
	if (!pMe->pImage)
	{
		IBITMAP_Release(pMe->pScreen);
	}
	
	IBITMAP_GetInfo(pMe->pImage, &(pMe->pIBitmapInfo), sizeof(pMe->pIBitmapInfo));
	IBITMAP_CreateCompatibleBitmap(pMe->pScreen, &(pMe->pBitmap), 
		(uint16)pMe->pIBitmapInfo.cx, (uint16)pMe->pIBitmapInfo.cy);         	//创建适合屏幕的兼容位图指针,即pMe->pBitmap
	
	IBITMAP_Release(pMe->pScreen);
	
	if (!pMe->pBitmap)
	{
		IBITMAP_Release(pMe->pImage);
	}
	
	IBITMAP_BltIn(pMe->pBitmap, x, y, pMe->pIBitmapInfo.cx,  
		pMe->pIBitmapInfo.cy, pMe->pImage, x, y, AEE_RO_COPY);
	IBITMAP_Release(pMe->pImage);
	IBITMAP_GetPixel(pMe->pBitmap, x, y, &(pMe->nativecolor));
	IBITMAP_SetTransparencyColor(pMe->pBitmap,pMe->nativecolor);
	IDISPLAY_BitBlt(pMe->a.m_pIDisplay, x, y, pMe->pIBitmapInfo.cx,
		pMe->pIBitmapInfo.cy,pMe->pBitmap, x, y, AEE_RO_COPY);
	IDISPLAY_Update(pMe->a.m_pIDisplay);
	IBITMAP_Release(pMe->pBitmap);
}
/************************************************************************/
/* Add the MenuStart Function                                           */
/************************************************************************/
static boolean VenCurSchedule_MenuStart(VenCurSchedule* pMe)
{
	CtlAddItem rMenuItem;
	AEERect nRect;
	AEEItemStyle nNormal;
	AEEItemStyle nSel;
	IMENUCTL_Reset( pMe->pIMenuCtl );
	IMENUCTL_SetActive(pMe->pIMenuCtl, FALSE );
	IMENUCTL_SetActive(pMe->pIMenuCtl,FALSE);
	IMENUCTL_SetActive(pMe->m_pSoftMenu,FALSE);

	rMenuItem.pText = NULL;
	rMenuItem.pImage = NULL;
	rMenuItem.pszResImage = rMenuItem.pszResText = VENCURSCHEDULE_RES_FILE;//resource file name
	rMenuItem.wFont = AEE_FONT_NORMAL;
	
    VenCurSchedule_ImageTitle(pMe,IDB_VENCURSCHEDULE_TILFLE,0,0);
	
	/*Add the IDS_SYLLABUS items*/
	rMenuItem.wText = IDS_SYLLABUS;
	rMenuItem.wImage = IDB_SYLLABUS;
	rMenuItem.wItemID = IDS_SYLLABUS;
	IMENUCTL_AddItemEx(pMe->pIMenuCtl,&rMenuItem);
	
	/*Add the IDS_DESIGN items*/
	rMenuItem.wText = IDS_DESIGN;
	rMenuItem.wImage = IDB_DESIGN;
	rMenuItem.wItemID = IDS_DESIGN;
	IMENUCTL_AddItemEx(pMe->pIMenuCtl,&rMenuItem);
	
    /*Add the IDS_SYSTEM items*/
    rMenuItem.wText = IDS_SYSTEM;
	rMenuItem.wImage = IDB_SYSTEM;
	rMenuItem.wItemID = IDS_SYSTEM;
	IMENUCTL_AddItemEx(pMe->pIMenuCtl,&rMenuItem);
	
	/* Add the IDS_HELP intes*/
    rMenuItem.wText = IDS_HELP;
	rMenuItem.wImage = IDB_HELP;
	rMenuItem.wItemID = IDS_HELP;
	IMENUCTL_AddItemEx(pMe->pIMenuCtl,&rMenuItem);
	
	/*Add the IDS_AHOUT items */
    rMenuItem.wText = IDS_ABOUT;
	rMenuItem.wImage = IDB_ABOUT;
	rMenuItem.wItemID = IDS_ABOUT;
    IMENUCTL_AddItemEx(pMe->pIMenuCtl,&rMenuItem);
	
	/* Add the IDS_QUIT items*/
	rMenuItem.wText = IDS_QUIT;
	rMenuItem.wImage = IDB_QUIT;
	rMenuItem.wItemID = IDS_QUIT;
	IMENUCTL_AddItemEx(pMe->pIMenuCtl,&rMenuItem);
	
    nNormal.ft = AEE_FT_NONE;               //没有边框
	nNormal.xOffset = nNormal.yOffset = 0;
	nNormal.roImage = AEE_RO_TRANSPARENT;   //help1337
	
	nSel.ft = AEE_FT_RAISED;                                                      //凸起 的2像素3d边框
	nSel.xOffset = nSel.yOffset = 0;
	nSel.yOffset = AEE_RO_TRANSPARENT;
	
	IMENUCTL_SetStyle(pMe->pIMenuCtl,&nNormal,&nSel);                             //设置菜单项的显示样式
	IMENUCTL_SetProperties( pMe->pIMenuCtl, 
		IMENUCTL_GetProperties( pMe->pIMenuCtl )&~(MP_ICON_TEXT_TOP) );           //设置菜单控件特定的属性或标记
	SETAEERECT( &nRect, 0, 15, pMe->m_nScrWidth, pMe->m_nScrHeight );
	
	IMENUCTL_SetTitle(pMe->pIMenuCtl,VENCURSCHEDULE_RES_FILE,IDS_MAINTITLE,NULL); //添加标题
	
	IMENUCTL_SetRect( pMe->pIMenuCtl, &nRect );
	IMENUCTL_SetActive( pMe->pIMenuCtl, TRUE );
	pMe->m_nState = APP_STATE_MAINMENU;
	return TRUE;
}
/************************************************************************/
/* Add the DevDrawDialog function                                       */
/************************************************************************/
static  void    VenCurSchedule_DevDrawDialog(VenCurSchedule* pMe,const AECHAR *szText)
{

	const AECHAR *p;
	AEERect nRect;
	int nFits = 0;
	int width = 0;
	int height = pMe->m_nLineHeight;
	int length = 0;
	int max_width = pMe->m_nClntAreaRect.dx - 10;
	p = szText;
	//IMENUCTL_SetActive(pMe->pIMenuCtl,FALSE);
	
	/* Calculate the height*/
	while( *p)
	{
		width = IDISPLAY_MeasureTextEx(pMe->a.m_pIDisplay,AEE_FONT_NORMAL,p,-1,max_width,&nFits);
		height+= pMe->m_nLineHeight;
		p+= nFits;
	}
	if(height>pMe->m_nLineHeight + pMe->m_nLineHeight)                   //文本内容多于一行时
		width = max_width;
    SETAEERECT(&nRect,(pMe->m_nClntAreaRect.dx-width)/2-DIALOG_BORDER_WIDTH,
		(pMe->m_nClntAreaRect.dy-height)/2,
		width+DIALOG_BORDER_WIDTH,
		height);
    IDISPLAY_DrawRect(pMe->a.m_pIDisplay,&nRect,0xffffff00,0xffffff00,
		IDF_RECT_FRAME|IDF_RECT_FILL);                                   //绘制矩形
	nRect.x += DIALOG_BORDER_WIDTH;
	nRect.y -= DIALOG_BORDER_WIDTH;
	p = szText;
	height = nRect.y + pMe->m_nLineHeight/2;
	while(*p)
	{
		width = IDISPLAY_MeasureTextEx(pMe->a.m_pIDisplay,AEE_FONT_NORMAL,p, -1,max_width, &nFits);
		IDISPLAY_DrawText(pMe->a.m_pIDisplay,AEE_FONT_NORMAL,p,nFits,nRect.x,height,&nRect,IDF_TEXT_TRANSPARENT);
		p+=nFits;
		height +=pMe->m_nLineHeight;
	}
	IDISPLAY_Update(pMe->a.m_pIDisplay);
}
/************************************************************************/
/*    Add the DisplaySplashScreen function                              */
/************************************************************************/
static void VenCurSchedule_DisplaySplashScreen(VenCurSchedule* pMe)
{
	IImage* pImage = NULL;
	AEEImageInfo rImageInfo;
	// Load the splash image from the rsource file
	pImage = ISHELL_LoadResImage(pMe->a.m_pIShell,VENCURSCHEDULE_RES_FILE,IDB_SPLASH);
	if(pImage)
	{
		// Clear screen and draw the image in the center of the screen
		IDISPLAY_ClearScreen(pMe->a.m_pIDisplay);
		IIMAGE_GetInfo(pImage,&rImageInfo);
		IIMAGE_Draw(pImage,0,0);
		IDISPLAY_Update(pMe->a.m_pIDisplay);
		IIMAGE_Release(pImage);
		// Set the callback timer to call this function again
		ISHELL_SetTimer(pMe->a.m_pIShell,SPLASH_DISPLAY_TIMER,(PFNNOTIFY)VenCurSchedule_MenuStart,(void*)pMe);
	}
	else
	{
		VenCurSchedule_MenuStart(pMe);
	}
	pMe->m_nState = APP_STATE_SPLASH;
}
/************************************************************************/
/*   Add the DisplayAboutScreen function                                */
/************************************************************************/
static void VenCurSchedule_DisplayAboutScreen(VenCurSchedule* pMe)    
{
	
	IDISPLAY_ClearScreen(pMe->a.m_pIDisplay);
	ISHELL_ShowCopyright(pMe->a.m_pIShell);                          //显示程序的版权信息
	ISHELL_SetTimer(pMe->a.m_pIShell,ABOUT_DISPLAY_TIMER,
		(PFNNOTIFY)VenCurSchedule_MenuStart,(void*)pMe);            //设置计时器
	pMe->m_nState = APP_STATE_ABOUT;
		
}

/************************************************************************/
/*        Add the DisplayHelpScreen                                     */
/************************************************************************/

static boolean VenCurSchedule_DisplayHelpScreen(VenCurSchedule* pMe)
{
	const char char1[] = "help.htm";//
	char       char2[MAXCHAR];
	if ((pMe->pIFile = IFILEMGR_OpenFile(pMe->pIFileMgr, char1, _OFM_READ)) ==NULL)
		return FALSE;
	IFILE_GetInfo(pMe->pIFile, &pMe->m_nFileInfo);
	if (IFILE_Read(pMe->pIFile, char2, pMe->m_nFileInfo.dwSize) == 0)   
		return FALSE;
	
	ISHELL_GetDeviceInfo(pMe->pIShell,&pMe->DeviceInfo);	
	pMe->rect.x = 0;
	pMe->rect.y = 0;  	
	pMe->rect.dx = pMe->DeviceInfo.cxScreen;
	pMe->rect.dy = pMe->DeviceInfo.cyScreen - 20;

	pMe->m_sRect.x = 0;
    pMe->m_sRect.y = pMe->DeviceInfo.cyScreen-40;
    pMe->m_sRect.dx = pMe->DeviceInfo.cxScreen;
    pMe->m_sRect.dy = 40;

	IHTMLVIEWER_SetRect(pMe->pIHtml,&pMe->rect); 
	
	IHTMLVIEWER_SetData(pMe->pIHtml, char2, -1);	
	IHTMLVIEWER_SetProperties(pMe->pIHtml,HVP_SCROLLBAR);
	IDISPLAY_ClearScreen(pMe->pIDisplay);
	IHTMLVIEWER_SetActive(pMe->pIHtml,TRUE);
	IHTMLVIEWER_Redraw(pMe->pIHtml);
	IDISPLAY_Update(pMe->pIDisplay);

	IMENUCTL_Reset(pMe->helpSoftMenu);
	IMENUCTL_SetActive(pMe->helpSoftMenu,FALSE);
    IMENUCTL_AddItem(pMe->helpSoftMenu,VENCURSCHEDULE_RES_FILE,IDS_HELP_SOFTOK,IDS_HELP_SOFTOK,NULL,1);
    IMENUCTL_SetRect(pMe->helpSoftMenu,&pMe->m_sRect);
    IMENUCTL_SetActive(pMe->helpSoftMenu,TRUE); 

    IFILE_Release(pMe->pIFile);
	pMe->m_nState = APP_STATE_HELP ;


	return  TRUE;
}


/************************************************************************/
/*      Add the QuitScreen Function                                     */
/************************************************************************/
static void VenCurSchedule_DisplayQuitScreen(VenCurSchedule *pMe)
{
	AECHAR szText[64];
	(void) ISHELL_LoadResString(pMe->a.m_pIShell,
		VENCURSCHEDULE_RES_FILE,
		IDS_QUITPROMPT,
		szText,
		sizeof(szText));
	IMENUCTL_SetActive(pMe->pIMenuCtl,FALSE);
	IDISPLAY_ClearScreen(pMe->pIDisplay);
	VenCurSchedule_DevDrawDialog(pMe,(const AECHAR *)szText);
	pMe->m_nState = APP_STATE_QUIT;
}
/************************************************************************/
/* Add the View Schedule Function                                       */
/************************************************************************/
static void VenCurSchedule_DisplayViewScreen(VenCurSchedule* pMe,uint16 Wday)
{
	CtlAddItem   rMenuItem;
	AEERect      nRect;
	AEEItemStyle nNormal;
	AEEItemStyle nSel;

	AECHAR       EveryDayCourse[32]={0};
	AECHAR       EveryDayClass[32]= {0};
	AECHAR       EveryDaySchedule1[24]={0};
	AECHAR       EveryDaySchedule2[24]={0};
	AECHAR       EveryDaySchedule3[24]={0};
	AECHAR       EveryDaySchedule4[24]={0};
	AECHAR       EveryDaySchedule5[24]={0};
	AECHAR       EveryDaySchedule6[24]={0};
	AECHAR       EveryDaySchedule7[24]={0};
	AECHAR       EveryDaySchedule8[24]={0};

	AECHAR       Burl1[3] = {'1',' ',0};
	AECHAR       Burl2[3] = {'2',' ',0};
	AECHAR       Burl3[3] = {'3',' ',0};
	AECHAR       Burl4[3] = {'4',' ',0};
	AECHAR       Burl5[3] = {'5',' ',0};
	AECHAR       Burl6[3] = {'6',' ',0};
	AECHAR       Burl7[3] = {'7',' ',0};
	AECHAR       Burl8[3] = {'8',' ',0};

	
	IMENUCTL_Reset( pMe->v_pIMenuCtl );
	IMENUCTL_SetActive(pMe->v_pIMenuCtl, FALSE );
	IMENUCTL_Reset(pMe->m_pSoftMenu);
	IMENUCTL_SetActive(pMe->m_pSoftMenu,FALSE);
	IDISPLAY_ClearScreen(pMe->pIDisplay);
	rMenuItem.pText = NULL;
	rMenuItem.pImage = NULL;
	rMenuItem.pszResImage = rMenuItem.pszResText = VENCURSCHEDULE_RES_FILE;//resource file name
	rMenuItem.wFont = AEE_FONT_NORMAL;
	VenCurSchedule_ImageTitle(pMe,IDB_VENCURSCHEDULE_TILFLE,0,0);
	pMe->day = Wday;
    if(pMe->day==0) IMENUCTL_SetTitle(pMe->v_pIMenuCtl,VENCURSCHEDULE_RES_FILE,IDS_MON,NULL);      //添加标题
	if(pMe->day==1) IMENUCTL_SetTitle(pMe->v_pIMenuCtl,VENCURSCHEDULE_RES_FILE,IDS_TUES,NULL);
	if(pMe->day==2) IMENUCTL_SetTitle(pMe->v_pIMenuCtl,VENCURSCHEDULE_RES_FILE,IDS_WED,NULL);
	if(pMe->day==3) IMENUCTL_SetTitle(pMe->v_pIMenuCtl,VENCURSCHEDULE_RES_FILE,IDS_THURS,NULL);
	if(pMe->day==4) IMENUCTL_SetTitle(pMe->v_pIMenuCtl,VENCURSCHEDULE_RES_FILE,IDS_FRI,NULL);
    if(pMe->day==5) IMENUCTL_SetTitle(pMe->v_pIMenuCtl,VENCURSCHEDULE_RES_FILE,IDS_SAT,NULL);
	if(pMe->day==6) IMENUCTL_SetTitle(pMe->v_pIMenuCtl,VENCURSCHEDULE_RES_FILE,IDS_SUN,NULL);

	VenCurSchedule_ReadScheduleFile(pMe);

	pMe->period=0;
	WSTRLCAT(EveryDaySchedule1,Burl1,sizeof(EveryDaySchedule1));
	WSTRLCAT(EveryDaySchedule1,pMe->FileArry[pMe->day].DetailFileArry[pMe->period].Course,sizeof(EveryDaySchedule1));
	WSTRLCAT(EveryDaySchedule1,pMe->FileArry[pMe->day].DetailFileArry[pMe->period].Class,sizeof(EveryDaySchedule1));
	
	WSTRLCAT(EveryDaySchedule2,Burl2,sizeof(EveryDaySchedule2));
	WSTRLCAT(EveryDaySchedule2,pMe->FileArry[pMe->day].DetailFileArry[pMe->period+1].Course,sizeof(EveryDaySchedule2));
	WSTRLCAT(EveryDaySchedule2,pMe->FileArry[pMe->day].DetailFileArry[pMe->period+1].Class,sizeof(EveryDaySchedule2));

	WSTRLCAT(EveryDaySchedule3,Burl3,sizeof(EveryDaySchedule3));
	WSTRLCAT(EveryDaySchedule3,pMe->FileArry[pMe->day].DetailFileArry[pMe->period+2].Course,sizeof(EveryDaySchedule3));
	WSTRLCAT(EveryDaySchedule3,pMe->FileArry[pMe->day].DetailFileArry[pMe->period+2].Class,sizeof(EveryDaySchedule3));

    WSTRLCAT(EveryDaySchedule4,Burl4,sizeof(EveryDaySchedule4));
	WSTRLCAT(EveryDaySchedule4,pMe->FileArry[pMe->day].DetailFileArry[pMe->period+3].Course,sizeof(EveryDaySchedule4));
	WSTRLCAT(EveryDaySchedule4,pMe->FileArry[pMe->day].DetailFileArry[pMe->period+3].Class,sizeof(EveryDaySchedule4));

	WSTRLCAT(EveryDaySchedule5,Burl5,sizeof(EveryDaySchedule5));
	WSTRLCAT(EveryDaySchedule5,pMe->FileArry[pMe->day].DetailFileArry[pMe->period+4].Course,sizeof(EveryDaySchedule5));
	WSTRLCAT(EveryDaySchedule5,pMe->FileArry[pMe->day].DetailFileArry[pMe->period+4].Class,sizeof(EveryDaySchedule5));

    WSTRLCAT(EveryDaySchedule6,Burl6,sizeof(EveryDaySchedule6));

⌨️ 快捷键说明

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