#define MenuWhat(n) {(u8 **)n,(sizeof(n)/sizeof(u8 *)),0}
u8 **DispItem_TT;
//Bar型菜单的数据结构
struct Menu
{
u8 **Text; //指向显示内容数组的指针
u8 TextNum; //项个数
void* (*Action)(); //对应的执行函数
};
//定义TT菜单属性
typedef struct
{
struct Menu menu;
u8 FunNum;//功能个数
//const u8 menu_type[11];
}TT_MENU_STUR;
//定义二级菜单
u8 *const MonitorMenu[]=
{
////////////////
"Status=1 INPUT=2OUTPUT=3 IQDV=4>",
"BUSV&C=5 TEMP=6VERSION=7 >",
"DOORWIDTH=8 ",
////////////////////////////////
};
u8 *const TestMenu[]=
{
////////////////
"SINGLE=1 CYCLE=2EVENT=3 LOGCLR=4",
////////////////////////////////
};
u8 *const SetMenu[]=
{
////////////////
"OpenProf=1 CloseProf=2 >",
"CNTRL=3 AUXILIARY=4 ",
////////////////////////////////
};
u8 *const InstallMenu[]=
{
////////////////
"INST1=1 WIRCHK=2Learn1=3Learn2=4",
////////////////////////////////
};
const TT_MENU_STUR level2MenuAttr[] = {{MenuWhat(MonitorMenu),8},\
{MenuWhat(TestMenu),4},\
{MenuWhat(SetMenu),4},\
{MenuWhat(InstallMenu),4},\
};//1屏 共9个选择 没层选项个数
void DisLevel2MenuInit(void)
{
ClrTTDisBuffer();
WireCheckFlag = 0;
//ItemNum_TT = level2MenuAttr[TTDisStru.DisGruopIndex-1].menu.TextNum;//(*BarMenu_TT).TextNum;
DispItem_TT = level2MenuAttr[TTDisStru.DisGruopIndex-1].menu.Text+TTDisStru.ScreenCnt;
strcpy(TTDisBuffer,*DispItem_TT);
SetTTDisBuffer();//清字符串结束标志
if(Sci1.state.CmdSet == 0)
Sci1.state.ComType = 7;
/* BarMenu_TT = &MonitorMenuDis[0];
ItemNum_TT = (*BarMenu_TT).TextNum;
DispItem_TT = (*BarMenu_TT).Text+TTDisStru.ParIndexCursor;
ClrTTDisBuffer();
TTDisBufferCopy( (*DispItem_TT),0);*/
//TTDisBuffer[31]='>';
}
关于这一句 DispItem_TT = level2MenuAttr[TTDisStru.DisGruopIndex-1].menu.Text+TTDisStru.ScreenCnt;
level2MenuAttr[TTDisStru.DisGruopIndex-1].menu.Text是一个应该是一个指向指针的指针吧,那再加上一个TTDisStru.ScreenCnt怎么理解,
(TTDisStru.ScreenCnt取值是数字1、2、3、4里的一个)
指向指针的指针加上数字怎么理解,
请大神帮帮忙解释一下 |