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

📄 calendar.c

📁 brew开发的日历程序 完全模仿mediaplayer的结构设计 值得初学者学习
💻 C
📖 第 1 页 / 共 3 页
字号:
					        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 + -