📄 calendar.c
字号:
pme->m_fontW, pme->m_fontH );
IDISPLAY_DrawRect(
pme->m_pIDisplay,
&rDay,
CUR_RGB,
NULL,
IDF_RECT_FRAME
);
}
WWRITELONG(cDay,dayCount);
IDISPLAY_DrawText(
pme->m_pIDisplay,
AEE_FONT_NORMAL,
cDay,
-1,
pme->m_xPoses[col],
pme->m_yPoses[row],
NULL,
IDF_TEXT_TRANSPARENT
);
dayCount++;
}//end of for col
}//end of for row
IDISPLAY_Update (pme->m_pIDisplay);
}
/**************************************************************************
* Function Name : Calender_EraseDates
* Description : 清屏
* Input Parameters : Calendar*
* Output Parameters: None
* Return Value : None
* Date : 2007/04/11
* Author : ZhongNingLin@neusoft.com
***************************************************************************/
static void Calender_EraseDates(Calendar *pme)
{
AEERect rDay;
uint8 row = 0;
uint8 col = 0;
for( row = 0; row < MAX_Y_POS; row++ )
{
for( col = 0; col < MAX_X_POS; col++ )
{
pme->m_days[row][col] = 0;
SETAEERECT( &rDay, pme->m_xPoses[col]-4, pme->m_yPoses[row],
pme->m_fontW, pme->m_fontH );
IDISPLAY_EraseRect(pme->m_pIDisplay,&rDay);
}//end of for col
}//end of for row
}
/**************************************************************************
* Function Name : Calender_EraseCusor
* Description : 在屏幕删除当前光标
* Input Parameters : Calendar*
* Output Parameters: None
* Return Value : None
* Date : 2007/04/11
* Author : ZhongNingLin@neusoft.com
***************************************************************************/
static void Calender_EraseCusor(Calendar *pme)
{
AECHAR cDay[3] = {' ','\0'};
AEERect rDay;
SETAEERECT(
&rDay,
pme->m_xPoses[pme->m_currXPos]-4,
pme->m_yPoses[pme->m_currYPos],
pme->m_fontW, pme->m_fontH
);
WWRITELONG(cDay,pme->m_days[pme->m_currYPos][pme->m_currXPos]);
IDISPLAY_EraseRect(pme->m_pIDisplay,&rDay);
IDISPLAY_DrawText(
pme->m_pIDisplay,
AEE_FONT_NORMAL,
cDay,
-1,
pme->m_xPoses[pme->m_currXPos],
pme->m_yPoses[pme->m_currYPos],
NULL,
IDF_TEXT_TRANSPARENT
);
/*判断是否是当前日期*/
if( pme->m_currDay == pme->m_day &&
pme->m_month == pme->m_currMonth &&
pme->m_currYear == pme->m_year )
{
IDISPLAY_DrawRect(
pme->m_pIDisplay,
&rDay,
CUR_RGB,
NULL,
IDF_RECT_FRAME
);
}
}
/**************************************************************************
* Function Name : Calender_DrawCusor
* Description : 在屏幕上绘制光标
* Input Parameters : Calendar*
* Output Parameters: None
* Return Value : None
* Date : 2007/04/11
* Author : ZhongNingLin@neusoft.com
***************************************************************************/
static void Calender_DrawCusor(Calendar *pme)
{
AEERect rDay;
AECHAR cDay[3] = {' ','\0'};
SETAEERECT(
&rDay,
pme->m_xPoses[pme->m_currXPos]-4,
pme->m_yPoses[pme->m_currYPos],
pme->m_fontW, pme->m_fontH
);
WWRITELONG(cDay,pme->m_days[pme->m_currYPos][pme->m_currXPos]);
IDISPLAY_FillRect(
pme->m_pIDisplay,
&rDay,
CUR_RGB
);
IDISPLAY_DrawText(
pme->m_pIDisplay,
AEE_FONT_NORMAL,
cDay,
-1,
pme->m_xPoses[pme->m_currXPos],
pme->m_yPoses[pme->m_currYPos],
NULL,
IDF_TEXT_TRANSPARENT
);
}
/**************************************************************************
* Function Name : Calendar_UpMoveCusor
* Description : 光标向上移动
* Input Parameters : Calendar*
* Output Parameters: None
* Return Value : None
* Date : 2007/04/11
* Author : ZhongNingLin@neusoft.com
***************************************************************************/
static void Calendar_UpMoveCusor(Calendar *pme)
{
uint8 m_currX = pme->m_currXPos;
uint8 m_currY = pme->m_currYPos;
if( m_currY - 1 < 0 || pme->m_days[m_currY - 1][m_currX] == 0 )
{
if( pme->m_month - 1 < 1)
{
pme->m_year--;
pme->m_month = 12;
pme->m_day = 1;
pme->m_monthDays = 31;
Calender_AccountfirsDayWeek(pme,pme->m_year, pme->m_month);
Calendar_DrawDate(pme);
m_currY = MAX_Y_POS - 1;
if( pme->m_days[m_currY][m_currX] == 0 )
{
if( pme->m_days[ m_currY - 1 ][m_currX] == 0 )
{
m_currY -= 2;
}
else
{
m_currY--;
}
}
pme->m_currYPos = m_currY;
}
else
{
pme->m_month--;
Calender_AccountfirsDayWeek(pme,pme->m_year, pme->m_month);
pme->m_monthDays = Calender_getMonthDays(pme->m_year, pme->m_month);
Calendar_DrawDate(pme);
m_currY = MAX_Y_POS - 1;
if( pme->m_days[m_currY][m_currX] == 0 )
{
if( pme->m_days[ m_currY - 1 ][m_currX] == 0 )
{
m_currY -= 2;
}
else
{
m_currY--;
}
}
pme->m_currYPos = m_currY;
}
Calender_DrawCusor( pme );
}
else
{
pme->m_currYPos--;
Calender_DrawCusor( pme );
}
pme->m_day = pme->m_days[pme->m_currYPos][pme->m_currXPos];
}
/**************************************************************************
* Function Name : Calendar_DownMoveCusor
* Description : 光标向下移动
* Input Parameters : Calendar*
* Output Parameters: None
* Return Value : None
* Date : 2007/04/11
* Author : ZhongNingLin@neusoft.com
***************************************************************************/
static void Calendar_DownMoveCusor(Calendar *pme)
{
uint8 m_currX = pme->m_currXPos;
uint8 m_currY = pme->m_currYPos;
if( m_currY + 1 >= MAX_Y_POS || pme->m_days[m_currY + 1][m_currX] == 0 )
{
if( pme->m_month + 1 > 12 )
{
pme->m_year++;
pme->m_month = 1;
pme->m_day = 1;
pme->m_monthDays = 31;
Calender_AccountfirsDayWeek(pme,pme->m_year, pme->m_month);
Calendar_DrawDate(pme);
m_currY = 0;
if( pme->m_days[m_currY][m_currX] == 0 )
{
if( pme->m_days[ m_currY + 1 ][m_currX] == 0 )
{
m_currY += 2;
}
else
{
m_currY++;
}
}
pme->m_currYPos = m_currY;
}
else
{
pme->m_month++;
Calender_AccountfirsDayWeek(pme,pme->m_year, pme->m_month);
pme->m_monthDays = Calender_getMonthDays(pme->m_year, pme->m_month);
Calendar_DrawDate(pme);
m_currY = 0;
if( pme->m_days[m_currY][m_currX] == 0 )
{
if( pme->m_days[ m_currY + 1 ][m_currX] == 0 )
{
m_currY += 2;
}
else
{
m_currY++;
}
}
pme->m_currYPos = m_currY;
}
Calender_DrawCusor( pme );
}
else
{
pme->m_currYPos++;
Calender_DrawCusor( pme );
}
pme->m_day = pme->m_days[pme->m_currYPos][pme->m_currXPos];
}
/**************************************************************************
* Function Name : Calendar_LeftMoveCusor
* Description : 光标向左移动
* Input Parameters : Calendar*
* Output Parameters: None
* Return Value : None
* Date : 2007/04/11
* Author : ZhongNingLin@neusoft.com
***************************************************************************/
static void Calendar_LeftMoveCusor(Calendar *pme)
{
uint8 m_currX = pme->m_currXPos;
uint8 m_currY = pme->m_currYPos;
if( m_currX - 1 < 0 || pme->m_days[m_currY][m_currX - 1] == 0 )
{
/*当前位置是该行的第一个位置或者为一号*/
if( m_currY - 1 < 0 )
{
/*当前行为第一行*/
if( pme->m_month - 1 < 1)
{
/*当前月为第一个月*/
pme->m_year--;
pme->m_month = 12;
pme->m_day = 1;
pme->m_monthDays = 31;
Calender_AccountfirsDayWeek(pme,pme->m_year, pme->m_month);
Calendar_DrawDate(pme);
m_currY = MAX_Y_POS - 1;
m_currX = MAX_X_POS - 1;
/*定位到该月的最后一天*/
if( pme->m_days[m_currY][m_currX] == 0 )
{
for( ;m_currY > 0; m_currY--)
{
for( m_currX = MAX_X_POS - 1; m_currX > 0; m_currX--)
{
if( pme->m_days[m_currY][m_currX] != 0 )
{
pme->m_currYPos = m_currY;
pme->m_currXPos = m_currX;
Calender_DrawCusor( pme );
return;
}
}
if( m_currX == 0 )
{
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -