📄 vencurschedule.c
字号:
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 + -