📄 menu_121.c
字号:
{ _MENU_GetSubMenuDisplayRect(hMenu, &MENURect); } MENURect.bColor = _bMENUBackgroundColor[hMenu]; MENURect.rect.wTop -= MENU_FRAME_THICKNESS; MENURect.rect.wBottom += MENU_FRAME_THICKNESS; MENURect.rect.wLeft -= MENU_FRAME_THICKNESS; MENURect.rect.wRight += MENU_FRAME_THICKNESS; GDI_FillRect(0, &MENURect); }BYTE _MENU_CheckIfAnyItemHasSubMenu(MENU *pMenu){ BYTE bMenuItemIndex; BYTE bSubMenuSymbol = FALSE; for (bMenuItemIndex = 0; bMenuItemIndex < pMenu->bTotalItem; bMenuItemIndex++) { if (pMenu->pMenuItem[bMenuItemIndex].pSubMenu != NULL) { bSubMenuSymbol = TRUE; } } return bSubMenuSymbol;}void _MENU_CopyString(void){ BYTE i; for (i = 0; i < __pOSDUTLOutputString[0]+1; i++) { __wMENUStringBuf[i] = __pOSDUTLOutputString[i]; }}void MENU_ResetToDefaultState(HMENU hMenu){ _pMENUSubMenu[hMenu] = (PMENU)(_pMENUCurrentMenu[hMenu]->pMenuItem[_pMENUCurrentMenu[hMenu]->bDefaultCursorPos].pSubMenu); //Set the cursor's position _Cursor[hMenu].bMainMenuIndex = _pMENUCurrentMenu[hMenu]->bDefaultCursorPos; _Cursor[hMenu].bPos = MENU_MAIN_MENU; if (_pMENUSubMenu[hMenu] == NULL) { _Cursor[hMenu].bSubMenuIndex = CURSOR_POS_INVALID; } else { _Cursor[hMenu].bSubMenuIndex = _pMENUSubMenu[hMenu]->bDefaultCursorPos; } //Main menu has "Up" mark? _MENU_SetMainMenuInitialDisplay(hMenu); if (_pMENUSubMenu[hMenu] != NULL) { //Sub-menu has "Up" mark? _MENU_SetSubMenuInitialDisplay(hMenu); }}
BYTE MENU_GetCurrentItemID(HMENU hMenu)
{
if (_Cursor[hMenu].bPos == MENU_MAIN_MENU)
{
return (_pMENUCurrentMenu[hMenu]->pMenuItem[_Cursor[hMenu].bMainMenuIndex].bID);
}
else
{
if (_pMENUSubMenu[hMenu]->bMenuType == MENU_TYPE_NUM)
{
return _Cursor[hMenu].bSubMenuIndex;
}
else
{
return (_pMENUSubMenu[hMenu]->pMenuItem[(_Cursor[hMenu].bSubMenuIndex)].bID);
}
}
}
BYTE MENU_AllDisableItems(HMENU hMenu)
{
BYTE bMenuIndex;
for (bMenuIndex = 0; bMenuIndex < _pMENUCurrentMenu[hMenu]->bTotalItem; bMenuIndex++)
{
if (_pMENUCurrentMenu[hMenu]->pMenuItem[bMenuIndex].bAttribute == MENU_ITEM_STATE_ENABLE)
return FALSE;
}
return TRUE;
}
BYTE _MENU_AllDisableSubItems(HMENU hMenu)
{
BYTE bMenuIndex;
for (bMenuIndex = 0; bMenuIndex < _pMENUSubMenu[hMenu]->bTotalItem; bMenuIndex++)
{
if (_pMENUSubMenu[hMenu]->pMenuItem[bMenuIndex].bAttribute == MENU_ITEM_STATE_ENABLE)
return FALSE;
}
return TRUE;
}
BYTE _MENU_CheckMainMenuCursorState(HMENU hMenu)
{
//Set the cursor's position
if (_pMENUCurrentMenu[hMenu]->pMenuItem[_Cursor[hMenu].bMainMenuIndex].bAttribute == MENU_ITEM_STATE_ENABLE)
{
if ((PMENU)(_pMENUCurrentMenu[hMenu]->pMenuItem[(_Cursor[hMenu].bMainMenuIndex)].pSubMenu) == NULL)
{
return FALSE;
}
else
{
return TRUE;
}
}
while (_pMENUCurrentMenu[hMenu]->pMenuItem[_Cursor[hMenu].bMainMenuIndex].bAttribute == MENU_ITEM_STATE_DISABLE)
{
if ((_Cursor[hMenu].bMainMenuIndex+1) < (_MainMenuDisplay[hMenu].bStartDrawItem+_MainMenuDisplay[hMenu].bMaxVisibleItem))
{
_Cursor[hMenu].bMainMenuIndex++;
}
else
{
break;
}
if (_pMENUCurrentMenu[hMenu]->pMenuItem[_Cursor[hMenu].bMainMenuIndex].bAttribute == MENU_ITEM_STATE_ENABLE)
{
_pMENUSubMenu[hMenu] = (PMENU)(_pMENUCurrentMenu[hMenu]->pMenuItem[(_Cursor[hMenu].bMainMenuIndex)].pSubMenu);
if (_pMENUSubMenu[hMenu] == NULL)
{
_Cursor[hMenu].bSubMenuIndex = CURSOR_POS_INVALID;
}
else
{
_Cursor[hMenu].bSubMenuIndex = _pMENUSubMenu[hMenu]->bDefaultCursorPos;
_MENU_SetSubMenuInitialDisplay(hMenu);
}
return TRUE;
}
}
_pMENUSubMenu[hMenu] = NULL;
_Cursor[hMenu].bSubMenuIndex = CURSOR_POS_INVALID;
return FALSE;
}
#ifdef SETUP_KEY_UP_DOWN_TOGGLE_OPTIONS
void _MENU_GoToMainMenuItem(HMENU hMenu, BYTE bItem)
{
BYTE bCount;
//Clear current sub-menu.
MENU_ClearMenuBackground(MENU_MAIN_MENU, hMenu);
_MENU_ClearUpDownArrowBackground(MENU_MAIN_MENU, hMenu, MENU_ARROW_TYPE_UP);
_MENU_ClearUpDownArrowBackground(MENU_MAIN_MENU, hMenu, MENU_ARROW_TYPE_DOWN);
MENU_ClearMenuBackground(MENU_SUB_MENU, hMenu);
if (bItem == MENU_FIRST_ITEM)
{
_Cursor[hMenu].bMainMenuIndex = 0;
if (_pMENUCurrentMenu[hMenu]->pMenuItem[_Cursor[hMenu].bMainMenuIndex].bAttribute == MENU_ITEM_STATE_DISABLE)
{
bCount = _MENU_GetCountForDownItem(_pMENUCurrentMenu[hMenu], _Cursor[hMenu].bMainMenuIndex);
_Cursor[hMenu].bMainMenuIndex += bCount;
}
if (_pMENUCurrentMenu[hMenu]->bTotalItem <= _MainMenuDisplay[hMenu].bMaxVisibleItem)
{
_MainMenuDisplay[hMenu].bStartDrawItem = 0;
_MainMenuDisplay[hMenu].bUpMark = FALSE;
}
else
{
if (_Cursor[hMenu].bMainMenuIndex >= _MainMenuDisplay[hMenu].bMaxVisibleItem)
{
_MainMenuDisplay[hMenu].bStartDrawItem = _Cursor[hMenu].bMainMenuIndex;
}
else
{
_MainMenuDisplay[hMenu].bStartDrawItem = 0;
}
}
}
else if (bItem == MENU_LAST_ITEM)
{
_Cursor[hMenu].bMainMenuIndex = _pMENUCurrentMenu[hMenu]->bTotalItem-1;
if (_pMENUCurrentMenu[hMenu]->pMenuItem[_Cursor[hMenu].bMainMenuIndex].bAttribute == MENU_ITEM_STATE_DISABLE)
{
bCount = _MENU_GetCountForUpItem(_pMENUCurrentMenu[hMenu], _Cursor[hMenu].bMainMenuIndex);
_Cursor[hMenu].bMainMenuIndex -= bCount;
}
if (_pMENUCurrentMenu[hMenu]->bTotalItem <= _MainMenuDisplay[hMenu].bMaxVisibleItem)
{
_MainMenuDisplay[hMenu].bStartDrawItem = 0;
_MainMenuDisplay[hMenu].bUpMark = FALSE;
}
else
{
if (_Cursor[hMenu].bMainMenuIndex >= _MainMenuDisplay[hMenu].bMaxVisibleItem)
{
_MainMenuDisplay[hMenu].bStartDrawItem = _Cursor[hMenu].bMainMenuIndex - _MainMenuDisplay[hMenu].bMaxVisibleItem + 1;
}
else
{
_MainMenuDisplay[hMenu].bStartDrawItem = 0;
}
}
}
if (_MainMenuDisplay[hMenu].bStartDrawItem == 0)
{
//Clear "Up" mark
_MainMenuDisplay[hMenu].bUpMark = FALSE;
}
else
{
_MainMenuDisplay[hMenu].bUpMark = TRUE;
}
if ((_MainMenuDisplay[hMenu].bStartDrawItem+_MainMenuDisplay[hMenu].bMaxVisibleItem) < _pMENUCurrentMenu[hMenu]->bTotalItem)
{
_MainMenuDisplay[hMenu].bDownMark = TRUE;
}
else
{
_MainMenuDisplay[hMenu].bDownMark = FALSE;
}
_MENU_ShowMainMenu(hMenu);
MENU_UpdateCursor(hMenu, CURSOR_STYLE_NORMAL);
_pMENUSubMenu[hMenu] = _pMENUCurrentMenu[hMenu]->pMenuItem[_Cursor[hMenu].bMainMenuIndex].pSubMenu;
//Show sub-menu
if ((_pMENUSubMenu[hMenu] != NULL) && (_pMENUSubMenu[hMenu]->bTotalItem != 0))
{
_pMENUSubMenu[hMenu] = (PMENU)(_pMENUCurrentMenu[hMenu]->pMenuItem[_Cursor[hMenu].bMainMenuIndex].pSubMenu);
_MENU_SetSubMenuInitialDisplay(hMenu);
_Cursor[hMenu].bSubMenuIndex = _pMENUSubMenu[hMenu]->bDefaultCursorPos;
_MENU_ShowSubMenu(hMenu);
}
}
void _MENU_GoToSubMenuItem(HMENU hMenu, BYTE bItem)
{
BYTE bCount;
//Clear current sub-menu.
MENU_ClearMenuBackground(MENU_SUB_MENU, hMenu);
_MENU_ClearUpDownArrowBackground(MENU_SUB_MENU, hMenu, MENU_ARROW_TYPE_UP);
_MENU_ClearUpDownArrowBackground(MENU_SUB_MENU, hMenu, MENU_ARROW_TYPE_DOWN);
if (bItem == MENU_FIRST_ITEM)
{
_Cursor[hMenu].bSubMenuIndex = 0;
if (_pMENUSubMenu[hMenu]->pMenuItem[_Cursor[hMenu].bSubMenuIndex].bAttribute == MENU_ITEM_STATE_DISABLE)
{
bCount = _MENU_GetCountForDownItem(_pMENUSubMenu[hMenu], _Cursor[hMenu].bSubMenuIndex);
_Cursor[hMenu].bMainMenuIndex += bCount;
}
if (_pMENUSubMenu[hMenu]->bTotalItem <= _SubMenuDisplay[hMenu].bMaxVisibleItem)
{
_SubMenuDisplay[hMenu].bStartDrawItem = 0;
_SubMenuDisplay[hMenu].bUpMark = FALSE;
}
else
{
if (_Cursor[hMenu].bSubMenuIndex >= _SubMenuDisplay[hMenu].bMaxVisibleItem)
{
_SubMenuDisplay[hMenu].bStartDrawItem = _Cursor[hMenu].bSubMenuIndex;
}
else
{
_SubMenuDisplay[hMenu].bStartDrawItem = 0;
}
}
}
else if (bItem == MENU_LAST_ITEM)
{
_Cursor[hMenu].bSubMenuIndex = _pMENUSubMenu[hMenu]->bTotalItem-1;
if (_pMENUSubMenu[hMenu]->pMenuItem[_Cursor[hMenu].bSubMenuIndex].bAttribute == MENU_ITEM_STATE_DISABLE)
{
bCount = _MENU_GetCountForUpItem(_pMENUSubMenu[hMenu], _Cursor[hMenu].bSubMenuIndex);
_Cursor[hMenu].bSubMenuIndex -= bCount;
}
if (_pMENUSubMenu[hMenu]->bTotalItem <= _SubMenuDisplay[hMenu].bMaxVisibleItem)
{
_SubMenuDisplay[hMenu].bStartDrawItem = 0;
_SubMenuDisplay[hMenu].bUpMark = FALSE;
}
else
{
if (_Cursor[hMenu].bSubMenuIndex >= _SubMenuDisplay[hMenu].bMaxVisibleItem)
{
_SubMenuDisplay[hMenu].bStartDrawItem = _Cursor[hMenu].bSubMenuIndex - _SubMenuDisplay[hMenu].bMaxVisibleItem + 1;
}
else
{
_SubMenuDisplay[hMenu].bStartDrawItem = 0;
}
}
}
if (_SubMenuDisplay[hMenu].bStartDrawItem == 0)
{
//Clear "Up" mark
_SubMenuDisplay[hMenu].bUpMark = FALSE;
}
else
{
_SubMenuDisplay[hMenu].bUpMark = TRUE;
}
if ((_SubMenuDisplay[hMenu].bStartDrawItem+_SubMenuDisplay[hMenu].bMaxVisibleItem) < _pMENUSubMenu[hMenu]->bTotalItem)
{
_SubMenuDisplay[hMenu].bDownMark = TRUE;
}
else
{
_SubMenuDisplay[hMenu].bDownMark = FALSE;
}
_MENU_ShowSubMenu(hMenu);
MENU_UpdateCursor(hMenu, CURSOR_STYLE_NORMAL);
}
#endif //SETUP_KEY_UP_DOWN_TOGGLE_OPTIONS
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -