📄 schmenu.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 + -