C语言面向对象程序设计
菜单操作:
要求以键盘上的“<- ->”左键与右键切换菜单焦点,当用户在焦点处于某菜单死
若敲击键盘上的OK、CANCLE键则调用该焦点菜单对应的处理函数
#include <stdio.h>
#define Menu_Num 3 //菜单数目
typedef struct tagSysMenu //菜单类
{
char *text;
int xPos;
int YPos;
void (*onOkFun)();
void (*onCancelFun)();
}SysMenu,*LPSysMenu;
static int currentFocusMenu = 0; //当前菜单
void menu1OnOk()
{
printf("currentFocusMenu is %d, onOkFun\n", currentFocusMenu);
}
void menu2OnOk()
{
printf("currentFocusMenu is %d, onOkFun\n", currentFocusMenu);
}
void menu3OnOk()
{
printf("currentFocusMenu is %d, onOkFun\n", currentFocusMenu);
}
void menu1OnCancel()
{
printf("currentFocusMenu is %d, onCancelFun\n", currentFocusMenu);
}
void menu2OnCancel()
{
printf("currentFocusMenu is %d, onCancelFun\n", currentFocusMenu);
}
void menu3OnCancel()
{
printf("currentFocusMenu is %d, onCancelFun", currentFocusMenu);
}
static SysMenu menu[Menu_Num] = //创建菜单的对象
{
{"menu1", 0, 48, menu1OnOk, menu1OnCancel},
{"menu2", 7, 48, menu2OnOk, menu2OnCancel},
{"menu3", 14, 48, menu3OnOk, menu3OnCancel},
};
void onOkKey() //行为,ok
{
menu[currentFocusMenu].onOkFun();
}
void OnCancelKey() //行为,cancel
{
menu[currentFocusMenu].onCancelFun();
}
int main(void)
{
currentFocusMenu = 1;
onOkKey();
currentFocusMenu = 2;
OnCancelKey();
}