#ifndef MENU_MODEL_H #define MENU_MODEL_H #include "display.h" typedef struct tagMenuModel { uint8_t byClass; uint8_t byName[50]; uint8_t byTip[50]; uint8_t byAttrib; uint16_t wPassword; uint16_t wPara; FUNCPTR pfnWinProc; } tagMenuModel; typedef struct MenuItem MenuItem; typedef MenuItem *tagPMenuItem; typedef MenuItem tagMenuItem; typedef struct { MenuItem *higher; MenuItem *lower; MenuItem *before; MenuItem *behind; } MenuLinks; typedef struct { uint16_t wPos; uint16_t wNum; uint16_t wSPosX; uint16_t wSPosY; uint16_t wEPosX; uint16_t wEPosY; } MenuRect; struct MenuItem { MenuLinks links; tagMenuModel menuDef; MenuRect rect; }; typedef struct { uint8_t by0LevelNum; tagPMenuItem ptHead; tagPMenuItem ptCurrent; tagPMenuItem ptRoute[4]; tagPMenuItem ptCurBak; tagPMenuItem pt0Level; } tagMenuCtrl; typedef struct menu_model_t menu_model_t; struct menu_model_t { uint16_t maxItem; tagMenuItem menuItems[300]; uint16_t by0LevelNum; }; void MenuModel_Init(menu_model_t *model); #endif