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

📄 schmenu.c

📁 brew开发的日历程序 完全模仿mediaplayer的结构设计 值得初学者学习
💻 C
字号:
/**
 * File Name    : SchMenu.c                                                                 
 * Created      : 07/04/11                                                                       
 * Author       : ZhongNingLin@neusoft.com                                                                    
 * Model        : 05YOP                                                                           
 * Description  : [[CN]] 此文件的职责是: [[CN]]                           
**/

#include "SchMenu.h"

/**************************************************************************
*	Function Name	 :	CMenuWin_New                                            
*	Description		 :	This function constructs menue window.
*	Input Parameters :	Schedule* 								
*	Output Parameters:	None												
*	Return Value	 :	IWindow *			
*	Date			 :	2007/04/11											
*	Author			 :	ZhongNingLin@neusoft.com              								
***************************************************************************/
IWindow *  CMenuWin_New(Schedule * pOwner)
{
	CMenuWin *        pMe;
    VTBL(IWindow)     vtbl;

	SH_IWINDOW_SETVTBL(&vtbl, CMenuWin_Enable, CMenuWin_Redraw, CMenuWin_HandleEvent, CMenuWin_Delete);
	pMe = (CMenuWin *)CWindow_New(sizeof(CMenuWin), pOwner, &vtbl);	
	if(NULL == pMe)
	{
		return FALSE;
	}
	/*初始化菜单*/
	if((ISHELL_CreateInstance
		(
		 pOwner->a.m_pIShell, 
		 AEECLSID_MENUCTL, 
		 (void**)(&pMe->m_pMenuCtl)
		) != SUCCESS)
	  )
	  return FALSE;
	/*初始化矩形变量*/
	SETAEERECT( &pMe->m_rMenuRect, 0, 20, pOwner->m_width, pOwner->m_height - 35 );
	/*初始化菜单状态*/
	pMe->m_eMenuState = APP_MAIN_MENU;
	if(!ScheMenu_InitMainMenu(pMe))
		return FALSE;
	/*返回窗体接口*/
    return (IWindow *)pMe;

}

/**************************************************************************
*	Function Name	 :	CMenuWin_Delete                                            
*	Description		 :	释放资源
*	Input Parameters :	IWindow* 								
*	Output Parameters:	None												
*	Return Value	 :	boolean			
*	Date			 :	2007/04/11											
*	Author			 :	ZhongNingLin@neusoft.com              								
***************************************************************************/
void CMenuWin_Delete(IWindow * po)
{
	CMenuWin *  pme = (CMenuWin *)po;
    ReleaseObj((void**)&pme->m_pMenuCtl);   
    
	FREEIF(pme);
}

/**************************************************************************
*	Function Name	 :	CMenuWin_Enable                                            
*	Description		 :	enable current window
*	Input Parameters :	IWindow * po, boolean bEnable						
*	Output Parameters:	None												
*	Return Value	 :	boolean			
*	Date			 :	2007/04/11											
*	Author			 :	ZhongNingLin@neusoft.com              								
***************************************************************************/
void CMenuWin_Enable(IWindow * po, boolean bEnable)
{
   CMenuWin *  pme = (CMenuWin *)po;

   if (!CWindow_ProcessEnable(po, bEnable))
      return;
   /*判断当前窗口是否为激活状态*/
   if (!pme->m_bActive)
   {      
      return;
   }
}

/**************************************************************************
*	Function Name	 :	CMenuWin_Redraw                                            
*	Description		 :	This function redraws the menu window.
*	Input Parameters :	IWindow* 								
*	Output Parameters:	None												
*	Return Value	 :	None			
*	Date			 :	2007/04/11											
*	Author			 :	ZhongNingLin@neusoft.com              								
***************************************************************************/
void  CMenuWin_Redraw(IWindow * po)
{
   CMenuWin *  pme = (CMenuWin *)po;

   if (!pme->m_bActive)
      return;

   IDISPLAY_ClearScreen(pme->m_pIDisplay);

   SH_DRAWHEADER(pme);   
   IMENUCTL_Redraw(pme->m_pMenuCtl);

   IDISPLAY_Update(pme->m_pIDisplay);
}

/**************************************************************************
*	Function Name	 :	CMenuWin_HandleEvent                                            
*	Description		 :	handle current window events
*	Input Parameters :	IWindow * , AEEEvent , uint16 , uint32 							
*	Output Parameters:	None												
*	Return Value	 :	boolean			
*	Date			 :	2007/04/11											
*	Author			 :	ZhongNingLin@neusoft.com              								
***************************************************************************/
boolean CMenuWin_HandleEvent(IWindow * po, AEEEvent eCode, uint16 wParam, uint32 dwParam)
{
   CMenuWin *  pme = (CMenuWin *)po;
   boolean     bRet = TRUE;

   if ( SH_ISCLR(eCode) )
   {
      Schedule_SetWindow(pme->m_pOwner, APP_MAIN_WIN, 0);
      return TRUE;
   }
   
   if (eCode == EVT_COPYRIGHT_END)
   {     
      return TRUE;
   }
            
   if (SH_ISEVTKEY(eCode))
      IMENUCTL_HandleEvent(pme->m_pMenuCtl, eCode, wParam, dwParam);  

   if (!SH_ISEVTCMD(eCode))
      return FALSE;

   switch (wParam)
   {
      case IDS_EVT_CREATE:
           Schedule_SetWindow(pme->m_pOwner, APP_STATE_EVTTYPE, 0); 		  
           return TRUE;

      case IDS_EVT_VIEW:
           Schedule_SetWindow(pme->m_pOwner, APP_STATE_ONEDAYDISP, 0);
           return TRUE;

	  case IDS_DATE_SEL:
		  Schedule_SetWindow(pme->m_pOwner, APP_DATESEL_WIN, 0);
		  return TRUE;

      default:
           bRet = FALSE;
           break;
   }

   return bRet;
}

/**************************************************************************
*	Function Name	 :	ScheMenu_InitMainMenu                                            
*	Description		 :	add item into menu
*	Input Parameters :	CMenuWin* 								
*	Output Parameters:	None												
*	Return Value	 :	boolean			
*	Date			 :	2007/04/11											
*	Author			 :	ZhongNingLin@neusoft.com              								
***************************************************************************/
boolean ScheMenu_InitMainMenu(CMenuWin* pMe)
{
   CtlAddItem ai;
   
   AEEMenuColors colour;
   colour.cText=MAKE_RGB(255,255,255);
   colour.cBack=MAKE_RGB(255,255,255);
   colour.cSelText=MAKE_RGB(0,0,0);
   colour.cFrame=MAKE_RGB(202,248,249);
   colour.cSelBack=MAKE_RGB(202,248,249);
   colour.wMask=5;
   
   
   ai.pText = NULL;
   ai.pImage = NULL;
   ai.pszResImage = ai.pszResText = SCHEDULE_RES_FILE;
   ai.wFont = AEE_FONT_NORMAL;
   ai.dwData = 0;

  
   ai.wText   = IDS_EVT_VIEW;
   ai.wImage  = IDI_EVT_VIEW;
   ai.wItemID = IDS_EVT_VIEW;

   IMENUCTL_AddItemEx(pMe->m_pMenuCtl, &ai);
  
   ai.wImage  = IDI_DATE_SEL;
   ai.wText   = IDS_DATE_SEL; 
   ai.wItemID = IDS_DATE_SEL;
   IMENUCTL_AddItemEx(pMe->m_pMenuCtl, &ai);
   // Add event create  
   ai.wImage  = IDI_EVT_CREATE; 
   ai.wText   = IDS_EVT_CREATE;
   ai.wItemID = IDS_EVT_CREATE;
   IMENUCTL_AddItemEx(pMe->m_pMenuCtl, &ai);
   IMENUCTL_SetColors(pMe->m_pMenuCtl,&colour); 
   IMENUCTL_SetRect(pMe->m_pMenuCtl,&pMe->m_rMenuRect);    
   IMENUCTL_SetActive(pMe->m_pMenuCtl,TRUE); 

   return TRUE;

}

/**************************************************************************
*	Function Name	 :	ReleaseObj                                            
*	Description		 :	释放资源
*	Input Parameters :	void *** 								
*	Output Parameters:	None												
*	Return Value	 :	None			
*	Date			 :	2007/04/11											
*	Author			 :	ZhongNingLin@neusoft.com              								
***************************************************************************/
static void ReleaseObj(void ** ppObj)
{
   if ( ppObj && *ppObj ) 
   {
      (void)IBASE_Release(((IBase *)*ppObj));
      *ppObj = NULL;
   }
}

⌨️ 快捷键说明

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