|
发表于 2012-11-15 12:58:08
|
显示全部楼层
Gorgon_Meducer 发表于 2012-11-14 23:06
你思考的这些问题其实是GUI逻辑层次构架的知识,我会注意在书中详细展开的。
基本思想是隔离:菜单的逻 ...
//菜单命令和转义按键值
enum
{
// 5个转义按键值
Key_Set = 10,
Key_Esc,
Key_Enter,
Key_Up,
Key_Down
// 菜单命令
};
//语言代码
enum
{
CN = 0,// 中文
EN, // English
LANGNUM
};
//字体大小枚举
typedef enum
{
Str_SIZE16 = 16,
Str_SIZE32 = 32
}StrSizeType;
//菜单显示内容结构体
//位置x
//位置y
//内容地址宽度
//内容地址高度
//字体大小
//待显示字符串
typedef struct
{
u16 x;
u16 y;
u16 width;
u16 height;
StrSizeType size;
u8* content;
}DisplayStruct;
//---------------------------------------------------------
//--------菜单结构体
//--------菜单的ID, 也就是菜单的索引号, 是各菜单顺利链接的节点
//--------菜单的标题,(菜单提示内容)
//--------菜单的项目数
//--------菜单的图标
//--------菜单的显示内容
//--------菜单动作执行函数
typedef struct
{
u8 MenuID;
u8 **MenuTitle;
u8 MenuNum;
u8 **MenuIco;
DisplayStruct *MenuString;
void* (*AddAction)();
}LXMenu;
//--------菜单结构体
//--------菜单的ID, 也就是菜单的索引号, 是各菜单顺利链接的节点
//--------菜单的标题,
//--------菜单的项目数
//--------菜单的图标
//--------菜单的显示内容
//--------菜单动作执行函数
//宏定义: 组合成菜单结构体
//菜单的ID
//| 菜单的标题
//| | 菜单的项目数
//| | | //菜单的图标
//| | | | //菜单的显示内容
//| | | | | //菜单动作执行函数
//| | | | | |
#define MenuWhat(ID, ITEMX) {ID, 0, (sizeof(ITEMX)/sizeof(DisplayStruct)/LANGNUM), 0, (DisplayStruct*)ITEMX, (void*)0,}
这是我真在做的菜单显示内容结构规划(基本上是结合坛里的代码,支持多种语言)。
有一个问题就是菜单结构体重 void* (*AddAction)(); 函数好像都用不上,为何坛里的代码都会有这么有东西呢? |
|