70 lines
1.1 KiB
C
70 lines
1.1 KiB
C
#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
|