分类: 嵌入式
2009-12-15 09:50:08
void ShowDot() { static BOOL bShowDot = TRUE; /* 再一次领略static关键字的威力 */ if(bShowDot) { showChar(’:’,xPos,yPos); } else { showChar(’ ’,xPos,yPos); } bShowDot = ! bShowDot; } |
/* 按下OK键 */ void onOkKey() { /* 判断在什么焦点菜单上按下Ok键,调用相应处理函数 */ Switch(currentFocus) { case MENU1: menu1OnOk(); break; case MENU2: menu2OnOk(); break; … } } /* 按下Cancel键 */ void onCancelKey() { /* 判断在什么焦点菜单上按下Cancel键,调用相应处理函数 */ Switch(currentFocus) { case MENU1: menu1OnCancel(); break; case MENU2: menu2OnCancel(); break; … } } |
/* 将菜单的属性和操作"封装"在一起 */ typedef struct tagSysMenu { char *text; /* 菜单的文本 */ BYTE xPos; /* 菜单在LCD上的x坐标 */ BYTE yPos; /* 菜单在LCD上的y坐标 */ void (*onOkFun)(); /* 在该菜单上按下ok键的处理函数指针 */ void (*onCancelFun)(); /* 在该菜单上按下cancel键的处理函数指针 */ }SysMenu, *LPSysMenu; |
static SysMenu menu[MENU_NUM] = { { "menu1", 0, 48, menu1OnOk, menu1OnCancel } , { " menu2", 7, 48, menu2OnOk, menu2OnCancel } , { " menu3", 7, 48, menu3OnOk, menu3OnCancel } , { " menu4", 7, 48, menu4OnOk, menu4OnCancel } … }; |
/* 按下OK键 */ void onOkKey() { menu[currentFocusMenu].onOkFun(); } /* 按下Cancel键 */ void onCancelKey() { menu[currentFocusMenu].onCancelFun(); } |