📄 sample_main.i
字号:
MenuGui.IconFlag = 0;
}
MenuGui.ItemIndex = GetIntLen(MENU_Result.Word);
if (MenuGui.ItemIndex > MenuGui.ItemCount)
{
MenuGui.ItemIndex = MenuGui.ItemCount;
}
if (MenuGui.IconFlag > MenuGui.ItemIndex - 1)
{
MenuGui.IconFlag = MenuGui.ItemIndex - 1;
}
MENU_Status |= 0x40;
}
else if (( Key == 0x10) || (Key == 0x20))
{
if ( Key== 0x10)
{
GUI_SetControlValue(MENU_Selected);
MenuID = MENU_Selected;
}
GUI_Pop_Stack();
LCD_HideCursor();
MENU_Status &= ~0x02;
MENU_Status &= ~0x20;
MENU_Status &= ~0x40;
MENU_Status |= 0x08;
MENU_Status &= ~0x02;
}
Key = 0x00;
}
if (MENU_Status & 0x40)
{
unsigned char Len;
MENU_Status &= ~0x40;
Len=IntToStr(Buffer,MENU_Result.Word);
LCD_HideCursor();
LCD_Position(2,1);
LCD_PutStrF(DefaultInputCaption);
if (Len < MenuGui.ItemIndex)
{
for (i=0; i<MenuGui.ItemIndex - Len; i++)
{
LCD_PutChar('0');
}
}
else if (Len > MenuGui.ItemIndex)
{
Len = MenuGui.ItemIndex;
}
for (i=0; i<Len; i++)
{
LCD_PutChar(Buffer[i]);
}
for (i=0; i<16 - MenuGui.ItemIndex; i++)
{
LCD_PutChar(' ');
}
LCD_Position(2,6 + MenuGui.ItemIndex - MenuGui.IconFlag);
LCD_ShowCursor();
}
}
/*******************************************************************************
** 函数名称: GUI_ShowMainMenu **
** 功能描述: 显示主菜单 **
** 输入参数: 无 **
** 输出参数: 无 **
*******************************************************************************/
void GUI_ShowMainMenu(void)
{
if (Key != 0x00)
{
if (Key == 0x01)
{
if (MenuGui.IconFlag > 0)
{
MenuGui.IconFlag--;
MENU_Status |= 0x10;
}
else if (MenuGui.ItemIndex > 0)
{
MenuGui.ItemIndex--;
MENU_Status |= 0x10;
}
GUI_SaveControlStatus(0x00,0x10);
}
else if (Key == 0x02)
{
unsigned char CalCount = 0;
CalCount = MenuGui.ItemCount - MenuGui.ItemIndex - 1;
if (MenuGui.IconFlag < 2 - 1)
{
if (MenuGui.IconFlag < CalCount)
{
MenuGui.IconFlag++;
MENU_Status |= 0x10;
}
}
else if (CalCount > 2 - 1)
{
MenuGui.ItemIndex++;
MENU_Status |= 0x10;
}
else if (CalCount == 2 - 1)
{
MenuGui.ItemIndex++;
MenuGui.IconFlag = 2 - 2;
MENU_Status |= 0x10;
}
GUI_SaveControlStatus(0x10,0x30);
}
else if ((Key == 0x10) || (Key == 0x08))
{
MENU_Selected = MenuGui.TopItemID + MenuGui.ItemIndex + MenuGui.IconFlag;
if (MENU_Selected < 11)
{
unsigned char Type;
flash unsigned char *SubMenuDefine;
SubMenuDefine = &MenuData[Menu[MENU_Selected]];
Type = SubMenuDefine[0x00] & 0x0F;
if (Type == 0x01)
{
GUI_Push_Stack();
MenuGui.TopItemID = SubMenuDefine[0x01];
MenuGui.ItemCount = SubMenuDefine[0x02];
MenuGui.ShowNum = SubMenuDefine[0x03] & 0x01;
MenuGui.IconFlag = 0;
MenuGui.ItemIndex = 0;
MENU_Status |= 0x10;
}
else
{
MenuID = MENU_Selected;
MENU_Status |= 0x20 | 0x40;
MENU_Status &= ~0x01;
if (Type == 0x02)
{
MENU_Status |= 0x08;
}
else
{
MENU_Status |= 0x02;
MENU_Style = Type & 0x0F;
}
}
}
GUI_SaveControlStatus(0xF0,0xF0);
}
else if ((Key == 0x20) || (Key == 0x04))
{
if (MENU_StackIndex > 0)
{
GUI_Pop_Stack();
MENU_Selected = MenuGui.TopItemID;
MENU_Status |= 0x10;
}
if (Key == 0x04)
{
GUI_SaveControlStatus(0x30,0x70);
}
if (Key == 0x20)
{
GUI_SaveControlStatus(0x70,0xF0);
}
}
Key = 0x00;
}
if (MENU_Status & 0x10)
{
unsigned char j = 0;
LCD_WriteCGRAM(Icon6x8 + 0x00 * 0x05, 0x00, 0);
for (j=0; j< 2 ; j++)
{
LCD_Position(j + 1, 1);
if (MenuGui.ItemIndex + j < MenuGui.ItemCount)
{
if (MENU_Control[0] == 0xF1)
{
GUI_WriteCaption(0, 0xFF);
}
else
{
if (MenuGui.IconFlag == j)
{
LCD_PutChar(0x00);
}
else
{
LCD_PutChar(' ');
}
if (MenuGui.ShowNum)
{
LCD_PutChar(GUI_MenuNo(MenuGui.ItemIndex + j + 1));
LCD_PutChar('.');
}
GUI_WriteCaption(MenuGui.TopItemID + MenuGui.ItemIndex + j, 0x80);
}
}
else
{
LCD_ClearLine(j + 1);
}
}
MENU_Status &= ~0x10;
}
}
/*******************************************************************************
** 函数名称: GUI_ShowMenu **
** 功能描述: 让菜单的GUI可以显示在LCD上 **
** 输入参数: 无 **
** 输出参数: 无 **
*******************************************************************************/
void GUI_ShowMenu(void)
{
MENU_Status |= 0x80;
MENU_Status |= 0x10;
}
/*******************************************************************************
** 函数名称: GUI_HideMenu **
** 功能描述: 隐藏菜单GUI,显示用户自己的内容 **
** 输入参数: BYTE ClearScreen : 关闭GUI之后,是否清除屏幕 **
** 输出参数: BYTE : 关功成功,返回TRUE,否则返回FALSE **
*******************************************************************************/
unsigned char GUI_HideMenu(unsigned char ClearScreen)
{
if ((MENU_Status & 0x01) || (MENU_Status & 0x08))
{
MENU_Status &= ~0x80;
if (ClearScreen) LCD_Clear();
return 1;
}
else
return 0;
}
/*******************************************************************************
** 函数名称: GUI_ProgressMessage **
** 功能描述: 菜单GUI消息分配和事件调用 **
** 输入参数: 无 **
** 输出参数: 无 **
*******************************************************************************/
void GUI_ProgressMessage(void)
{
if ((MENU_Status & 0x80))
{
if (MENU_Status & 0x01)
{
GUI_ShowMainMenu();
}
else if (MENU_Status & 0x02)
{
if ((MENU_Style & 0x0F) == 0x03)
{
GUI_ChooseRadioMenu();
}
else if ((MENU_Style & 0x0F) == 0x05)
{
GUI_GetUserInput();
}
else
{
MENU_Status &= ~0x02;
MENU_Status |= 0x10;
MENU_Status |= 0x01;
}
}
else if (MENU_Status & 0x08)
{
ExecuteMenu();
MenuID = 0;
MENU_Status &= ~0x08;
MENU_Status |= 0x10;
MENU_Status |= 0x01;
}
}
else
{
if ((Key == 0x40)&&(!(MENU_Status & 0x80)))
{
GUI_ShowMenu();
Key = 0x00;
}
}
}
/*******************************************************************************
** 函数名称: GUI_Init **
** 功能描述: GUI和菜单初始化 **
** 输入参数: 无 **
** 输出参数: 无 **
*******************************************************************************/
void GUI_Init(void)
{
flash unsigned char *SubMenuDefine;
SubMenuDefine = &MenuData[Menu[MENU_Selected]];
MenuGui.TopItemID = SubMenuDefine[0x01];
MenuGui.IconFlag = 0;
MenuGui.ItemIndex = 0;
MenuGui.ItemCount = SubMenuDefine[0x02];
MenuGui.ShowNum = SubMenuDefine[0x03] & 0
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -