📄 sample_mai__.c
字号:
for (i=3; i<=LCD_ROW_COUNT; i++)
{
LCD_ClearLine(i);
}
MenuGui.ItemCount = SubMenuDefine[SubMenuDefine_Count];
MenuGui.TopItemID = SubMenuDefine[SubMenuDefine_FirstItemAddr];
GUI_GetControlValue(MENU_Selected);
MenuGui.ItemIndex = MENU_Result.Byte;
if (MenuGui.ItemIndex > 0)
{
MenuGui.ItemIndex --;
}
if (MenuGui.ItemIndex > MenuGui.ItemCount - 1)
{
MenuGui.ItemIndex = MenuGui.ItemCount - 1;
}
SET_STATUS(STATUS_UPDATEVALUE);
CLR_STATUS(STATUS_UPDATETITLE);
}
if ((Key != NO_KEY)||(MENU_Status & STATUS_UPDATEVALUE))
{
CLR_STATUS(STATUS_UPDATEVALUE);
LCD_Position(2,1);
if (MenuGui.ItemIndex == 0)
{
LCD_PutChar(ICON_RADIO_DOWN);
}
else if (MenuGui.ItemIndex == MenuGui.ItemCount - 1)
{
LCD_PutChar(ICON_RADIO_UP);
}
else
{
LCD_PutChar(ICON_RADIO_UPDOWN);
}
LCD_PutChar('=');
GUI_WriteCaption(MenuGui.TopItemID + MenuGui.ItemIndex, FORMAT_SHOW_SPACE);
if (Key == BT_UP)
{
if (MenuGui.ItemIndex > 0)
{
MenuGui.ItemIndex --;
SET_STATUS(STATUS_UPDATEVALUE);
}
}
else if (Key == BT_DOWN)
{
if (MenuGui.ItemIndex < MenuGui.ItemCount - 1)
{
MenuGui.ItemIndex ++;
SET_STATUS(STATUS_UPDATEVALUE);
}
}
else if ((Key == BT_APPLY)||(Key == BT_LEFT))
{
MENU_Result.Byte = MenuGui.ItemIndex + 1;
GUI_SetControlValue(MENU_Selected);
MenuID = MENU_Selected;
GUI_Pop_Stack();
CLR_STATUS(STATUS_UPDATETITLE);
CLR_STATUS(STATUS_UPDATEVALUE);
SET_STATUS(STATUS_EVENT);
CLR_STATUS(STATUS_CONTROL);
}
Key = NO_KEY;
}
}
/*******************************************************************************
** 函数名称: GUI_GetUserInput **
** 功能描述: 取得用户的输入值,用户输入的数值会保存在相应的控制项 **
** 输入参数: 无 **
** 输出参数: 无 **
*******************************************************************************/
void GUI_GetUserInput(void)
{
WORD V[INT16_MAX_NUM]={1,10,100,1000,10000};
BYTE Buffer[INT16_MAX_NUM];
BYTE i;
if (MENU_Status & STATUS_UPDATETITLE)
{
GUI_Push_Stack();
i = GUI_GetControlValue(MENU_Selected);
if (i == 1)
{
INPT_MAX_Width = INT8_MAX_NUM;
}
else
{
INPT_MAX_Width = INT16_MAX_NUM;
}
LCD_Position(1,1);
GUI_WriteCaption(MENU_Selected, FORMAT_SHOW_SPACE);
for (i=3; i<=LCD_ROW_COUNT; i++)
{
LCD_ClearLine(i);
}
/*
LCD_Position(2,1);
for (i=0;i<6;i++)
{
LCD_PutChar(DefaultInputCaption[i]);
}
*/
INPT_CUR_Width = GetIntLen(INPT_Result);
if (INPT_CUR_Width > INPT_MAX_Width)
{
INPT_CUR_Width = INPT_MAX_Width;
}
MenuGui.IconFlag = 0;
SET_STATUS(STATUS_UPDATEVALUE);
CLR_STATUS(STATUS_UPDATETITLE);
}
if (Key!=NO_KEY)
{
if ( Key == BT_LEFT )
{
if (MenuGui.IconFlag < INPT_CUR_Width - 1)
{
MenuGui.IconFlag++;
SET_STATUS(STATUS_UPDATEVALUE);
}
else
{
if (INPT_CUR_Width < INPT_MAX_Width)
{
INPT_CUR_Width++;
MenuGui.IconFlag++;
SET_STATUS(STATUS_UPDATEVALUE);
}
}
}
else if ( Key == BT_RIGHT )
{
if (MenuGui.IconFlag > 0)
{
MenuGui.IconFlag --;
SET_STATUS(STATUS_UPDATEVALUE);
}
}
else if ( Key == BT_UP )
{
if (INPT_Result + V[MenuGui.IconFlag] > INPT_Result)
{
INPT_Result += V[MenuGui.IconFlag];
if (INPT_MAX_Width == INT8_MAX_NUM)
{
if (INPT_Result > 0x00FF)
{
INPT_Result = 0x00FF;
}
}
}
else
{
if (INPT_MAX_Width == INT8_MAX_NUM)
{
INPT_Result = 0x00FF;
}
else
{
INPT_Result = 0xFFFF;
}
}
INPT_CUR_Width = GetIntLen(INPT_Result);
if (INPT_CUR_Width > INPT_MAX_Width)
{
INPT_CUR_Width = INPT_MAX_Width;
}
SET_STATUS(STATUS_UPDATEVALUE);
}
else if ( Key == BT_DOWN )
{
if (INPT_Result >= V[MenuGui.IconFlag])
{
INPT_Result -= V[MenuGui.IconFlag];
}
else if (INPT_Result > 0)
{
INPT_Result -= 1;
MenuGui.IconFlag = 0;
}
INPT_CUR_Width = GetIntLen(INPT_Result);
if (INPT_CUR_Width > INPT_MAX_Width)
{
INPT_CUR_Width = INPT_MAX_Width;
}
if (MenuGui.IconFlag > INPT_CUR_Width - 1)
{
MenuGui.IconFlag = INPT_CUR_Width - 1;
}
SET_STATUS(STATUS_UPDATEVALUE);
}
else if (( Key == BT_APPLY) || (Key == BT_CANCEL))
{
if ( Key== BT_APPLY)
{
GUI_SetControlValue(MENU_Selected);
MenuID = MENU_Selected;
}
GUI_Pop_Stack();
LCD_HideCursor();
CLR_STATUS(STATUS_CONTROL);
CLR_STATUS(STATUS_UPDATETITLE);
CLR_STATUS(STATUS_UPDATEVALUE);
SET_STATUS(STATUS_EVENT);
CLR_STATUS(STATUS_CONTROL);
}
Key = NO_KEY;
}
if (MENU_Status & STATUS_UPDATEVALUE)
{
BYTE Len;
CLR_STATUS(STATUS_UPDATEVALUE);
Len=IntToStr(Buffer,INPT_Result);
LCD_HideCursor();
LCD_Position(2,1);
LCD_PutStrF(DefaultInputCaption);
if (Len < INPT_CUR_Width)
{
for (i=0; i<INPT_CUR_Width - Len; i++)
{
LCD_PutChar('0');
}
}
else if (Len > INPT_CUR_Width)
{
Len = INPT_CUR_Width;
}
for (i=0; i<Len; i++)
{
LCD_PutChar(Buffer[i]);
}
for (i=0; i<CAPTION_LENGTH - INPT_CUR_Width; i++)
{
LCD_PutChar(' ');
}
LCD_Position(2,6 + INPT_CUR_Width - MenuGui.IconFlag);
LCD_ShowCursor();
}
}
/*******************************************************************************
** 函数名称: GUI_ShowMainMenu **
** 功能描述: 显示主菜单 **
** 输入参数: 无 **
** 输出参数: 无 **
*******************************************************************************/
void GUI_ShowMainMenu(void)
{
if (Key != NO_KEY)
{
if (Key == BT_UP)
{
if (MenuGui.IconFlag > 0)
{
MenuGui.IconFlag--;
SET_STATUS(STATUS_UPDATEMAINMENU);
}
else if (MenuGui.ItemIndex > 0)
{
MenuGui.ItemIndex--;
SET_STATUS(STATUS_UPDATEMAINMENU);
}
GUI_SaveControlStatus(0x00,0x10);
}
else if (Key == BT_DOWN)
{
BYTE CalCount = 0;
CalCount = MenuGui.ItemCount - MenuGui.ItemIndex - 1;
if (MenuGui.IconFlag < LCD_ROW_COUNT - 1)
{
if (MenuGui.IconFlag < CalCount)
{
MenuGui.IconFlag++;
SET_STATUS(STATUS_UPDATEMAINMENU);
}
}
else if (CalCount > LCD_ROW_COUNT - 1)
{
MenuGui.ItemIndex++;
SET_STATUS(STATUS_UPDATEMAINMENU);
}
else if (CalCount == LCD_ROW_COUNT - 1)
{
MenuGui.ItemIndex++;
MenuGui.IconFlag = LCD_ROW_COUNT - 2;
SET_STATUS(STATUS_UPDATEMAINMENU);
}
GUI_SaveControlStatus(0x10,0x30);
}
else if ((Key == BT_APPLY) || (Key == BT_RIGHT))
{
MENU_Selected = MenuGui.TopItemID + MenuGui.ItemIndex + MenuGui.IconFlag;
if (MENU_Selected < MENU_COUNT)
{
BYTE Type;
flash BYTE *SubMenuDefine;
SubMenuDefine = SUBMENUDEFINE(MENU_Selected);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -