⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 menu.c

📁 ct952 source code use for Digital Frame Photo
💻 C
📖 第 1 页 / 共 4 页
字号:
void _MENU_SetMainMenuInitialDisplay(HMENU hMenu){    if (_pMENUCurrentMenu[hMenu]->bDefaultCursorPos > (_MainMenuDisplay[hMenu].bMaxVisibleItem-1))    {        _MainMenuDisplay[hMenu].bUpMark = TRUE;        _MainMenuDisplay[hMenu].bStartDrawItem = _pMENUCurrentMenu[hMenu]->bDefaultCursorPos-_MainMenuDisplay[hMenu].bMaxVisibleItem+1;    }    else    {        _MainMenuDisplay[hMenu].bUpMark = FALSE;        _MainMenuDisplay[hMenu].bStartDrawItem = 0;    }        //Main menu has "Down" mark?    if ((_MainMenuDisplay[hMenu].bStartDrawItem + _MainMenuDisplay[hMenu].bMaxVisibleItem) < _pMENUCurrentMenu[hMenu]->bTotalItem)    {        _MainMenuDisplay[hMenu].bDownMark = TRUE;    }    else    {        _MainMenuDisplay[hMenu].bDownMark = FALSE;    }}BYTE _MENU_GetCountForUpItem(MENU *pMenu, BYTE bCursorIndex){    BYTE bCount = 0;    if (bCursorIndex == 0)        return 0;    while (bCursorIndex != 0)    {        bCursorIndex--;        bCount++;        if (pMenu->pMenuItem[bCursorIndex].bAttribute == MENU_ITEM_STATE_ENABLE)            break;      }        if (bCursorIndex == 0)    {        if (pMenu->pMenuItem[bCursorIndex].bAttribute == MENU_ITEM_STATE_DISABLE)        {            return 0;        }    }                        return bCount;}BYTE _MENU_GetCountForDownItem(MENU *pMenu, BYTE bCursorIndex){    BYTE bCount = 0;    if (bCursorIndex == (pMenu->bTotalItem-1))        return 0;    while (bCursorIndex != (pMenu->bTotalItem-1))    {        bCursorIndex++;        bCount++;                if (pMenu->pMenuItem[bCursorIndex].bAttribute == MENU_ITEM_STATE_ENABLE)            break;      }    if (bCursorIndex == (pMenu->bTotalItem-1))    {        if (pMenu->pMenuItem[bCursorIndex].bAttribute == MENU_ITEM_STATE_DISABLE)        {            return 0;        }    }                        return bCount;}void MENU_ClearMenuBackground(BYTE bMenuMode, HMENU hMenu){    PARM_RECT MENURect;    if (bMenuMode == MENU_MAIN_MENU)    {        _MENU_GetMainMenuDisplayRect(hMenu, &MENURect);    }    else if (bMenuMode == MENU_SUB_MENU)    {        _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_OPTIONSvoid _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 + -