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

📄 schedatedisp.c

📁 brew开发的日历程序 完全模仿mediaplayer的结构设计 值得初学者学习
💻 C
📖 第 1 页 / 共 2 页
字号:

/**************************************************************************
*	Function Name	 :	ScheDateDisp_Disp                                            
*	Description		 :	显示整个界面.
*	Input Parameters :	CMainWin * 									
*	Output Parameters:	None												
*	Return Value	 :	None			
*	Date			 :	2007/04/11											
*	Author			 :	ZhongNingLin@neusoft.com              								
***************************************************************************/
void ScheDateDisp_Disp(CMainWin* pMe)
{
   	ScheExt_Reset((Schedule *)pMe->m_pOwner,pMe->set);
	ScheDateDisp_DrawGround(pMe);
	ScheExt_SetMonthProperties((Schedule *)pMe->m_pOwner);
	ScheDateDisp_DrawCusor(pMe);
	ScheDateDisp_DrawDate(pMe);	
}

/**************************************************************************
*	Function Name	 :	ScheDateDisp_DrawCusor                                            
*	Description		 :	绘制屏幕上选中日期的小矩形.
*	Input Parameters :	CMainWin * 									
*	Output Parameters:	None												
*	Return Value	 :	None			
*	Date			 :	2007/04/11											
*	Author			 :	ZhongNingLin@neusoft.com              								
***************************************************************************/
static void  ScheDateDisp_DrawCusor(CMainWin* pMe)
{
	int new_xPos=0;
	int new_yPos=0;
	
	switch(pMe->m_firstPos)
	{
	case 0:
		if(pMe->m_pOwner->m_day<=7)
		{
			pMe->v_count = 0;
			pMe->h_count = pMe->m_pOwner->m_day-1;
		}
		else if(pMe->m_pOwner->m_day<=14)
		{
			pMe->v_count = 1;
			pMe->h_count = pMe->m_pOwner->m_day-8;
		}
		else if(pMe->m_pOwner->m_day<=21)
		{
			pMe->v_count = 2;
			pMe->h_count = pMe->m_pOwner->m_day-15;
		}
		else if(pMe->m_pOwner->m_day<=28)
		{
			pMe->v_count = 3;
			pMe->h_count = pMe->m_pOwner->m_day-22;
		}
		else
		{
			pMe->v_count = 4;
			pMe->h_count = pMe->m_pOwner->m_day-30;
		}
		break;
	case 1:
		if(pMe->m_pOwner->m_day<=6)
		{
			pMe->v_count = 0;
			pMe->h_count = pMe->m_pOwner->m_day;
		}
		else if(pMe->m_pOwner->m_day<=13)
		{
			pMe->v_count = 1;
			pMe->h_count = pMe->m_pOwner->m_day-7;
		}
		else if(pMe->m_pOwner->m_day<=20)
		{
			pMe->v_count = 2;
			pMe->h_count = pMe->m_pOwner->m_day-14;
		}
		else if(pMe->m_pOwner->m_day<=27)
		{
			pMe->v_count = 3;
			pMe->h_count = pMe->m_pOwner->m_day-21;
		}
		else
		{
			pMe->v_count = 4;
			pMe->h_count = pMe->m_pOwner->m_day-28;
		}
		break;
	case 2:
		if(pMe->m_pOwner->m_day<=5)
		{
			pMe->v_count = 0;
			pMe->h_count = pMe->m_pOwner->m_day+1;
		}
		else if(pMe->m_pOwner->m_day<=12)
		{
			pMe->v_count = 1;
			pMe->h_count = pMe->m_pOwner->m_day-6;
		}
		else if(pMe->m_pOwner->m_day<=19)
		{
			pMe->v_count = 2;
			pMe->h_count = pMe->m_pOwner->m_day-13;
		}
		else if(pMe->m_pOwner->m_day<=26)
		{
			pMe->v_count = 3;
			pMe->h_count = pMe->m_pOwner->m_day-20;
		}
		else
		{
			pMe->v_count = 4;
			pMe->h_count = pMe->m_pOwner->m_day-27;
		}
		break;
	case 3:
		if(pMe->m_pOwner->m_day<=4)
		{
			pMe->v_count = 0;
			pMe->h_count = pMe->m_pOwner->m_day+2;
		}
		else if(pMe->m_pOwner->m_day<=11)
		{
			pMe->v_count = 1;
			pMe->h_count = pMe->m_pOwner->m_day-5;
		}
		else if(pMe->m_pOwner->m_day<=18)
		{
			pMe->v_count = 2;
			pMe->h_count = pMe->m_pOwner->m_day-12;
		}
		else if(pMe->m_pOwner->m_day<=25)
		{
			pMe->v_count = 3;
			pMe->h_count = pMe->m_pOwner->m_day-19;
		}
		else
		{
			pMe->v_count = 4;
			pMe->h_count = pMe->m_pOwner->m_day-26;
		}
		break;
	case 4:
		if(pMe->m_pOwner->m_day<=3)
		{
			pMe->v_count = 0;
			pMe->h_count = pMe->m_pOwner->m_day+3;
		}
		else if(pMe->m_pOwner->m_day<=10)
		{
			pMe->v_count = 1;
			pMe->h_count = pMe->m_pOwner->m_day-4;
		}
		else if(pMe->m_pOwner->m_day<=17)
		{
			pMe->v_count = 2;
			pMe->h_count = pMe->m_pOwner->m_day-11;
		}
		else if(pMe->m_pOwner->m_day<=24)
		{
			pMe->v_count = 3;
			pMe->h_count = pMe->m_pOwner->m_day-18;
		}
		else
		{
			pMe->v_count = 4;
			pMe->h_count = pMe->m_pOwner->m_day-25;
		}
		break;
	case 5:
		if(pMe->m_pOwner->m_day<=2)
		{
			pMe->v_count = 0;
			pMe->h_count = pMe->m_pOwner->m_day+4;
		}
		else if(pMe->m_pOwner->m_day<=9)
		{
			pMe->v_count = 1;
			pMe->h_count = pMe->m_pOwner->m_day-3;
		}
		else if(pMe->m_pOwner->m_day<=16)
		{
			pMe->v_count = 2;
			pMe->h_count = pMe->m_pOwner->m_day-10;
		}
		else if(pMe->m_pOwner->m_day<=23)
		{
			pMe->v_count = 3;
			pMe->h_count = pMe->m_pOwner->m_day-17;
		}
		else if(pMe->m_pOwner->m_day<=30)
		{
			pMe->v_count = 4;
			pMe->h_count = pMe->m_pOwner->m_day-24;
		}
		else 
		{
			pMe->v_count = 5;
			pMe->h_count = pMe->m_pOwner->m_day-31;
		}
		break;
	case 6:
		if(pMe->m_pOwner->m_day<=1)
		{
			pMe->v_count = 0;
			pMe->h_count = pMe->m_pOwner->m_day+5;
		}
		else if(pMe->m_pOwner->m_day<=8)
		{
			pMe->v_count = 1;
			pMe->h_count = pMe->m_pOwner->m_day-2;
		}
		else if(pMe->m_pOwner->m_day<=15)
		{
			pMe->v_count = 2;
			pMe->h_count = pMe->m_pOwner->m_day-9;
		}
		else if(pMe->m_pOwner->m_day<=22)
		{
			pMe->v_count = 3;
			pMe->h_count = pMe->m_pOwner->m_day-16;
		}
		else if(pMe->m_pOwner->m_day<=29)
		{
			pMe->v_count = 4;
			pMe->h_count = pMe->m_pOwner->m_day-23;
		}
		else 
		{
			pMe->v_count = 5;
			pMe->h_count = pMe->m_pOwner->m_day-30;
		}
		break;
	default: ;
	}
    new_xPos = pMe->h_startPos + pMe->h_count*pMe->h_distance;
	new_yPos = pMe->v_startPos + pMe->v_count*pMe->v_distance;
    SETAEERECT( &pMe->m_rGridRect,new_xPos + 1, new_yPos + 1, pMe->h_distance - 1, pMe->v_distance - 1);
    IDISPLAY_FillRect (pMe->m_pOwner->a.m_pIDisplay,&pMe->m_rGridRect, MAKE_RGB(183,111,255));
}

/**************************************************************************
*	Function Name	 :	ScheExt_InitClassData                                            
*	Description		 :	初始化布局屏幕的矩形.
*	Input Parameters :	ScheExt** , Schedule*									
*	Output Parameters:	None												
*	Return Value	 :	None			
*	Date			 :	2007/04/11											
*	Author			 :	ZhongNingLin@neusoft.com              								
***************************************************************************/
boolean ScheExt_InitClassData(ScheExt** ppObj,Schedule* pAee)
{
	ScheExt*	pMe = NULL;

	pMe = (ScheExt*)MALLOC(sizeof(ScheExt));
	if(NULL == pMe)
	{
		return FALSE;
	}
   
	// initial [S]
	SETAEERECT( &pMe->m_rRect1, 0, 0, pAee->DeviceInfo.cxScreen,20 );
    SETAEERECT( &pMe->m_rRect2, 0,pAee->DeviceInfo.cyScreen-15, pAee->DeviceInfo.cxScreen,15 );
    SETAEERECT( &pMe->m_rRect3, 0, 20, pAee->DeviceInfo.cxScreen,pAee->DeviceInfo.cyScreen-35 );
	// initial [E]
	*ppObj = pMe;
	return TRUE;
}

/**************************************************************************
*	Function Name	 :	ScheExt_Reset                                            
*	Description		 :	Draw hander of the application
*	Input Parameters :	ScheExt** , Schedule*									
*	Output Parameters:	None												
*	Return Value	 :	None			
*	Date			 :	2007/04/11											
*	Author			 :	ZhongNingLin@neusoft.com              								
***************************************************************************/
void    ScheExt_Reset(Schedule* pMe,ScheExt* Set)
{
	 IDISPLAY_ClearScreen(pMe->a.m_pIDisplay);
    
     IDISPLAY_FillRect (pMe->a.m_pIDisplay,&Set->m_rRect1, MAKE_RGB(255,70,70));
     IDISPLAY_FillRect (pMe->a.m_pIDisplay,&Set->m_rRect2, MAKE_RGB(255,70,70));
}

/**************************************************************************
*	Function Name	 :	ScheExt_SetMonthProperties                                            
*	Description		 :	This function set any month days
*	Input Parameters :	Schedule*									
*	Output Parameters:	None												
*	Return Value	 :	None			
*	Date			 :	2007/04/11											
*	Author			 :	ZhongNingLin@neusoft.com              								
***************************************************************************/

void  ScheExt_SetMonthProperties(Schedule* pMe)
{
	switch(pMe->m_month)
	{
	case 1:
		{   
			pMe->m_days=31;
			((CMainWin *)(pMe->m_pWin) )->m_firstPos=0;
            break;
		}
    case 2:
		{   
			pMe->m_days=28;
			((CMainWin *)(pMe->m_pWin) )->m_firstPos=3;
            break;
		}
	case 3:
		{   
			pMe->m_days=31;
			((CMainWin *)(pMe->m_pWin) )->m_firstPos=3;
            break;
		}
	case 4:
		{   
			pMe->m_days=30;
			((CMainWin *)(pMe->m_pWin) )->m_firstPos=6;
            break;
		}
	case 5:
		{   
			pMe->m_days=31;
			((CMainWin *)(pMe->m_pWin) )->m_firstPos=1;
            break;
		}
	case 6:
		{   
			pMe->m_days=30;
			((CMainWin *)(pMe->m_pWin) )->m_firstPos=4;
            break;
		}
	case 7:
		{   
			pMe->m_days=31;
			((CMainWin *)(pMe->m_pWin) )->m_firstPos=6;
            break;
		}
	case 8:
		{   
			pMe->m_days=31;
			((CMainWin *)(pMe->m_pWin) )->m_firstPos=2;
            break;
		}
    case 9:
		{   
			pMe->m_days=30;
			((CMainWin *)(pMe->m_pWin) )->m_firstPos=5;
            break;
		}
	case 10:
		{   
			pMe->m_days=31;
			((CMainWin *)(pMe->m_pWin) )->m_firstPos=0;
            break;
		}
    case 11:
		{   
			pMe->m_days=30;
			((CMainWin *)(pMe->m_pWin) )->m_firstPos=3;
            break;
		}
	case 12:
		{   
			pMe->m_days=31;
			((CMainWin *)(pMe->m_pWin) )->m_firstPos=5;
            break;
		}
	default : ;
	}
}

/**************************************************************************
*	Function Name	 :	release_ScheExt                                            
*	Description		 :	This function is release ScheExt*.
*	Input Parameters :	ScheExt * 									
*	Output Parameters:	None												
*	Return Value	 :	None			
*	Date			 :	2007/04/11											
*	Author			 :	ZhongNingLin@neusoft.com              								
***************************************************************************/
void release_ScheExt(ScheExt* Set)
{
	FREEIF(Set);
}
//-------------------------------------end of file-------------------------

⌨️ 快捷键说明

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