本人所有文章,暂时只作为个人闲暇之余的爱好,如偶有客官路过,权当我是打酱油的吧。
本篇讲述Mocor平台中对窗口、菜单Id的管理。
菜单组:
菜单管理的文件主要有三个:
***_menutable.c ***_menutable.h ***_menutable.def
其中c文件定义了菜单组,h文件主要定义菜单id,而def文件则对菜单组作了一个归纳管理,下面逐个描述。
一、H文件
最基本的内容如下,包括菜单中选项的枚举值、菜单组的枚举,以及全局函数的声明。
#ifndef SPARROW_MENUTABLE_H
#define SPARROW_MENUTABLE_H
#include "guimenu.h"
#include "mmi_text.h"
#include "mmi_image.h"
#include "mmi_common.h"
/**---------------------------------------------------------------------------*
** Compiler Flag *
**---------------------------------------------------------------------------*/
#ifdef __cplusplus
extern "C"
{
#endif
/*-------------------------------------------------------------------------*/
/* TYPES/CONSTANTS */
/*-------------------------------------------------------------------------*/
// 菜单ID
// 可以将模块内所有的菜单选项都列举到这一个枚举中
// 也可以单独枚举每一个菜单组的菜单选项
typedef enum
{
SPARROW_MENU_ID_TEST1,
SPARROW_MENU_ID_TEST2,
SPARROW_MENU_ID_TEST3,
SPARROW_MENU_ID_TEST4,
SPARROW_MENU_ID_MAX,
}MMI_SPARROW_MENU_ID_E;
// 这是一个宏,就是从 def 文件中将菜单组的ID 提取出来
#define MENU_DEF(_TABLEID, _ITEMPTR, _STYLE, _TITLESTR, _TITLE_ICON, _TITLE_NUMICON, _TITLE_BACKGROUND, \
_ITEMCOUNT) \
_TABLEID,
// 通过上面的宏,将所有菜单组的ID 组成一个枚举
// 通过这个枚举之后,每一个 _TABLEID 在平台中都有了一个唯一的值
typedef enum
{
SPARROW_MENU_LABEL_START = (MMI_MODULE_SPARROW << 16),
#include "sparrow_menutable.def"
SPARROW_MENU_LABLE_MAX
}MenuSparrowLabelE;
#undef MENU_DEF
/*-------------------------------------------------------------------------*/
/* FUNCTIONS */
/*-------------------------------------------------------------------------*/
/******************************************************************************
* MMISPARROW_RegMenuGroup - 注册菜单组
* DESCRIPTION: -
* 向平台注册sparrow模块中的菜单组
* Input:
* Output:
* Returns:
*
* modification history
* --------------------
* 01a, 14sep2011, written
* --------------------
******************************************************************************/
PUBLIC void MMISPARROW_RegMenuGroup(void);
/*-------------------------------------------------------------------------*/
/* VARIABLE