void display(struct MenuItem * MenuPoint,short Line) { int j; uint16_t x =30; uint16_t y =30; LCD_Fill(0, y+Line*24-24,lcddev.width,y+Line*24,BLUE); for (j=0;j<MenuPoint->MenuCout;j++) { // LCD_ShowString(x,y,lcddev.width,24,24,(u8*)MenuPoint[j].DisStr); // LCD_ShowString(x,y,lcddev.width,24,24,"MenuPoint[j].DisStr"); LCD_ShowMenuItem(x,y,lcddev.width,24,24,(char*)MenuPoint[j].DisStr); y+=24; } } button_value=get_button_value(); if(button_value!=(u16)0) printf("button value=0x%3x\r\n",button_value); delay_ms(100); //150ms检测一次,防止连续读取重复值(人按下按钮会持续一段时间才松开)。 key = get_k(button_value); if(key!=0) { switch(key) { case 1: //上 { if (Line==1) { Line =MenuPoint->MenuCout;//如果第一行的话则转到最底下那行 printf("success!"); } else { printf("fail"); Line--; } }; break; LCD_Clear(WHITE); printf("clear\r\n"); delay_ms(1000); display(MenuPoint,Line); printf("%d\r\n",Line); delay_ms(1000); printf("display\r\n"); } 中display函数无法显示
时间: 2024-04-13 12:29:31 浏览: 63
CC++日期时间time_t与struct_tm转换
5星 · 资源好评率100%
根据你提供的代码,我看到你调用了`LCD_ShowMenuItem`函数来显示菜单项,但是你注释掉了这行代码,所以导致无法显示菜单项。
你可以尝试取消注释这行代码,即将注释符号`//`去掉,这样就可以正常显示菜单项了。修改后的代码如下所示:
```c
void display(struct MenuItem * MenuPoint, short Line)
{
int j;
uint16_t x = 30;
uint16_t y = 30;
LCD_Fill(0, y + Line * 24 - 24, lcddev.width, y + Line * 24, BLUE);
for (j = 0; j < MenuPoint->MenuCout; j++)
{
LCD_ShowMenuItem(x, y, lcddev.width, 24, 24, (char *)MenuPoint[j].DisStr);
y += 24;
}
}
```
另外,你在`switch`语句中有一段代码似乎放错位置了,应该将它放在`case 1`的`break`语句之前,如下所示:
```c
switch (key)
{
case 1: //上
{
if (Line == 1)
{
Line = MenuPoint->MenuCout; //如果第一行的话则转到最底下那行
printf("success!");
}
else
{
printf("fail");
Line--;
}
LCD_Clear(WHITE);
printf("clear\r\n");
delay_ms(1000);
display(MenuPoint, Line);
printf("%d\r\n", Line);
delay_ms(1000);
printf("display\r\n");
};
break;
}
```
这样修改后,你应该可以正常显示菜单项了。如果还有其他问题,请随时提问。
阅读全文