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

📄 menu_121.c

📁 ct952 source code use for Digital Frame Photo
💻 C
📖 第 1 页 / 共 5 页
字号:
    if (pMenu->bCheckMenuItemPos != MENU_ITEM_NO_CHECKED_ITEM)    {        wMaxWidth += GDI_GetStringWidth_909(aMENUCheckSymbol);        wMaxWidth += MENU_CHECK_SYMBOL_DISTANCE_H;    }    if (_MENU_CheckIfAnyItemHasSubMenu(pMenu))    {        wMaxWidth += GDI_GetStringWidth_909(aMENUSubMenuSymbol);        wMaxWidth += MENU_SUBMENU_SYMBOL_DISTANCE_H;    }    return wMaxWidth;}WORD _MENU_GetStringStartH(BYTE bMenuMode, HMENU hMenu, WORD *pString){    WORD wStringWidth;    WORD wMenuWidth;    MENU *pMenu = NULL;    WORD wStartH;    WORD wCheckSymbolWidth = 0;    WORD wSubMenuSymbolWidth = 0;    PARM_RECT MENURect;    if (bMenuMode == MENU_MAIN_MENU)    {        pMenu = _pMENUCurrentMenu[hMenu];        _MENU_GetMainMenuDisplayRect(hMenu, &MENURect);    }    else if (bMenuMode == MENU_SUB_MENU)    {        pMenu = _pMENUSubMenu[hMenu];        _MENU_GetSubMenuDisplayRect(hMenu, &MENURect);    }    wMenuWidth = _MENU_GetMenuWidth(pMenu);    wStringWidth = GDI_GetStringWidth_909(pString);    wStartH = MENURect.rect.wLeft+MENU_STRING_DISTANCE_H;    if (pMenu->bCheckMenuItemPos != MENU_ITEM_NO_CHECKED_ITEM)    {        wCheckSymbolWidth = GDI_GetStringWidth_909(aMENUCheckSymbol) + MENU_CHECK_SYMBOL_DISTANCE_H;    }    if (_MENU_CheckIfAnyItemHasSubMenu(pMenu))    {        wSubMenuSymbolWidth = GDI_GetStringWidth_909(aMENUSubMenuSymbol)+MENU_SUBMENU_SYMBOL_DISTANCE_H;    }    switch (pMenu->bAlignment)    {    case MENU_ITEM_ALIGNMENT_CENTER:        wStartH = wStartH+wCheckSymbolWidth+((wMenuWidth-wCheckSymbolWidth-wSubMenuSymbolWidth-MENU_STRING_DISTANCE_H*2-wStringWidth)>>1);                        break;    case MENU_ITEM_ALIGNMENT_RIGHT:        wStartH = MENURect.rect.wLeft+wMenuWidth-MENU_STRING_DISTANCE_H-wSubMenuSymbolWidth-wStringWidth;        break;    case MENU_ITEM_ALIGNMENT_LEFT:        wStartH += wCheckSymbolWidth;        break;    default:        break;    }    return wStartH;}void MENU_UpdateCursor(HMENU hMenu, BYTE bCursorStyle){    PARM_RECT MENURect;    PARM_DRAW_STRING MENUStringAttr;    MENU *pMenu;    BYTE bCursorIndex;    if (_Cursor[hMenu].bPos == MENU_MAIN_MENU)    {        pMenu = _pMENUCurrentMenu[hMenu];        bCursorIndex = _Cursor[hMenu].bMainMenuIndex;        MENURect.rect.wLeft = pMenu->wStartX;        MENURect.rect.wTop = pMenu->wStartY+(bCursorIndex-_MainMenuDisplay[hMenu].bStartDrawItem)*MENU_ITEM_HEIGHT+MENU_STRING_DISTANCE_V;    }    else if (_Cursor[hMenu].bPos == MENU_SUB_MENU)    {        pMenu = _pMENUSubMenu[hMenu];        bCursorIndex = _Cursor[hMenu].bSubMenuIndex;        MENURect.rect.wLeft = _MENU_GetSubMenuNormalStartH(hMenu);        MENURect.rect.wTop = _MENU_GetSubMenuNormalStartV(hMenu)+(bCursorIndex-_SubMenuDisplay[hMenu].bStartDrawItem)*MENU_ITEM_HEIGHT+MENU_STRING_DISTANCE_V;            }    else        return;    //Draw the cursor    if (bCursorStyle == CURSOR_STYLE_NORMAL)    {        MENURect.bColor = MENU_PALETTE_ENTRY_HIGHLIGHT;    }    else if (bCursorStyle == CURSOR_STYLE_CLEAR)    {        MENURect.bColor = MENU_PALETTE_ENTRY_GENERAL_BACKGROUND;    }    else if (bCursorStyle == CURSOR_STYLE_GRAYED)    {        MENURect.bColor = MENU_PALETTE_ENTRY_CURSOR_GRAYED;    }    MENURect.rect.wRight = MENURect.rect.wLeft + _MENU_GetMenuWidth(pMenu) - 1;    MENURect.rect.wBottom = MENURect.rect.wTop+MENU_ITEM_HEIGHT-1;         GDI_FillRect(0, &MENURect);    //Draw the menu item string    MENUStringAttr.bTextColor = MENU_PALETTE_ENTRY_ITEM_TEXT;    MENUStringAttr.bColorKey = 0;    MENUStringAttr.bBackground = MENURect.bColor;         if (pMenu->bMenuType == MENU_TYPE_NUM)    {                    OSDUTL_PrepareOutputString();        OSDUTL_OutputNumFromIndex(pMenu->wStartNum+bCursorIndex);        _MENU_CopyString();                MENUStringAttr.wX = _MENU_GetStringStartH(_Cursor[hMenu].bPos, hMenu, __pOSDUTLOutputString);        MENUStringAttr.wY = MENURect.rect.wTop+((MENU_ITEM_HEIGHT-GDI_GetStringHeight(__pOSDUTLOutputString)) >> 1);                GDI_DrawString_909(0, &MENUStringAttr, __wMENUStringBuf);    }    else    {                                MENUStringAttr.wX = _MENU_GetStringStartH(_Cursor[hMenu].bPos, hMenu, pMenu->pMenuItem[bCursorIndex].pwItemText);                        MENUStringAttr.wY = MENURect.rect.wTop+((MENU_ITEM_HEIGHT-GDI_GetStringHeight(pMenu->pMenuItem[bCursorIndex].pwItemText)) >> 1);        GDI_DrawString_909(0, &MENUStringAttr, pMenu->pMenuItem[bCursorIndex].pwItemText);    }    //Draw Check symbol    if (_Cursor[hMenu].bPos == MENU_SUB_MENU)    {        if (pMenu->bCheckMenuItemPos != MENU_ITEM_NO_CHECKED_ITEM)        {            if (bCursorIndex == pMenu->bCheckMenuItemPos)            {                MENUStringAttr.wX = MENURect.rect.wLeft + MENU_STRING_DISTANCE_H;                MENUStringAttr.wY = MENURect.rect.wTop+((MENU_ITEM_HEIGHT-GDI_GetStringHeight(aMENUCheckSymbol)) >> 1);                GDI_DrawString_909(0, &MENUStringAttr, aMENUCheckSymbol);            }        }    }    if (_Cursor[hMenu].bPos == MENU_MAIN_MENU)    {        if (pMenu->pMenuItem[bCursorIndex].pSubMenu != NULL)        {            MENUStringAttr.wX = MENURect.rect.wRight-MENU_STRING_DISTANCE_H-GDI_GetStringWidth_909(aMENUSubMenuSymbol);            MENUStringAttr.wY = MENURect.rect.wTop+((MENU_ITEM_HEIGHT-GDI_GetStringHeight(aMENUSubMenuSymbol)) >> 1);           GDI_DrawString_909(0, &MENUStringAttr, aMENUSubMenuSymbol);        }    }}void _MENU_ShowSubMenu(HMENU hMenu){
    BYTE bCount = 0;    BYTE bMenuIndex;    PARM_RECT MENURect;    PARM_DRAW_STRING MENUStringAttr;    WORD wMenuWidth;    BYTE bDisplayItemNum;    if (_pMENUSubMenu[hMenu] != NULL)    {      
        //CoCo1.13
        if (_pMENUSubMenu[hMenu]->pMenuItem[_Cursor[hMenu].bSubMenuIndex].bAttribute == MENU_ITEM_STATE_DISABLE)
        {
            bCount = _MENU_GetCountForDownItem(_pMENUSubMenu[hMenu], _Cursor[hMenu].bSubMenuIndex);
            
            if (bCount == 0)
            {
                bCount = _MENU_GetCountForUpItem(_pMENUSubMenu[hMenu], _Cursor[hMenu].bSubMenuIndex);
                if (bCount > 0)
                {
                    _Cursor[hMenu].bSubMenuIndex -= bCount;
                }
            }
            else
            {
                _Cursor[hMenu].bSubMenuIndex += bCount;
            }
            
            _pMENUSubMenu[hMenu]->bDefaultCursorPos = _Cursor[hMenu].bSubMenuIndex;
            _MENU_SetSubMenuInitialDisplay(hMenu);
        }                 
        //Fill rectangle        _MENU_GetSubMenuDisplayRect(hMenu, &MENURect);        MENURect.bColor = MENU_PALETTE_ENTRY_GENERAL_BACKGROUND;                GDI_FillRect(0, &MENURect);            //Fill frame        _MENU_DrawFrame(MENU_SUB_MENU, hMenu);        //Draw separate frame        if (_SubMenuDisplay[hMenu].bUpMark == TRUE)         {            _MENU_DrawSeparateFrame(MENU_SUB_MENU, hMenu, MENU_UP_SEPARATE_FRAME);            _MENU_UpdateUpDownArraow(MENU_SUB_MENU, hMenu, MENU_ARROW_TYPE_UP);        }                if (_SubMenuDisplay[hMenu].bDownMark == TRUE)        {            _MENU_DrawSeparateFrame(MENU_SUB_MENU, hMenu, MENU_DOWN_SEPARATE_FRAME);            _MENU_UpdateUpDownArraow(MENU_SUB_MENU, hMenu, MENU_ARROW_TYPE_DOWN);        }                wMenuWidth = _MENU_GetMenuWidth(_pMENUSubMenu[hMenu]);        MENUStringAttr.bTextColor = MENU_PALETTE_ENTRY_ITEM_TEXT;        MENUStringAttr.bBackground = MENU_PALETTE_ENTRY_GENERAL_BACKGROUND;        MENUStringAttr.bColorKey = 0;        if (_pMENUSubMenu[hMenu]->bTotalItem <= _SubMenuDisplay[hMenu].bMaxVisibleItem)        {            bDisplayItemNum = _pMENUSubMenu[hMenu]->bTotalItem;        }        else        {            bDisplayItemNum = _SubMenuDisplay[hMenu].bMaxVisibleItem;        }                for (bMenuIndex = 0; bMenuIndex < bDisplayItemNum; bMenuIndex++)        {             
            if (_pMENUSubMenu[hMenu]->pMenuItem[bMenuIndex+(_SubMenuDisplay[hMenu].bStartDrawItem)].bAttribute == MENU_ITEM_STATE_DISABLE)
            {
                MENUStringAttr.bTextColor = MENU_PALETTE_ENTRY_ITEM_GRAYED;
            }
            else
            {
                MENUStringAttr.bTextColor = MENU_PALETTE_ENTRY_ITEM_TEXT;            
            }
            if (_pMENUSubMenu[hMenu]->bMenuType == MENU_TYPE_NUM)            {                OSDUTL_PrepareOutputString();                OSDUTL_OutputNumFromIndex(_pMENUSubMenu[hMenu]->wStartNum+_SubMenuDisplay[hMenu].bStartDrawItem+bMenuIndex);                _MENU_CopyString();                                MENUStringAttr.wX = _MENU_GetStringStartH(MENU_SUB_MENU, hMenu, __pOSDUTLOutputString);                MENUStringAttr.wY = _MENU_GetSubMenuNormalStartV(hMenu) + MENU_STRING_DISTANCE_V+bMenuIndex*MENU_ITEM_HEIGHT+((MENU_ITEM_HEIGHT-GDI_GetStringHeight(__pOSDUTLOutputString)) >> 1);                GDI_DrawString_909(0, &MENUStringAttr, __wMENUStringBuf);            }            else            {                MENUStringAttr.wX = _MENU_GetStringStartH(MENU_SUB_MENU, hMenu, _pMENUSubMenu[hMenu]->pMenuItem[bMenuIndex+(_SubMenuDisplay[hMenu].bStartDrawItem)].pwItemText);                                MENUStringAttr.wY = _MENU_GetSubMenuNormalStartV(hMenu) + MENU_STRING_DISTANCE_V + bMenuIndex*MENU_ITEM_HEIGHT+((MENU_ITEM_HEIGHT-GDI_GetStringHeight(_pMENUSubMenu[hMenu]->pMenuItem[bMenuIndex+(_SubMenuDisplay[hMenu].bStartDrawItem)].pwItemText)) >> 1);;                GDI_DrawString_909(0, &MENUStringAttr, _pMENUSubMenu[hMenu]->pMenuItem[bMenuIndex+(_SubMenuDisplay[hMenu].bStartDrawItem)].pwItemText);            }                        //Draw check symbol            if (_pMENUSubMenu[hMenu]->bCheckMenuItemPos != MENU_ITEM_NO_CHECKED_ITEM)            {                if ((bMenuIndex+_SubMenuDisplay[hMenu].bStartDrawItem) == _pMENUSubMenu[hMenu]->bCheckMenuItemPos)                {                    MENUStringAttr.wX = MENURect.rect.wLeft + MENU_STRING_DISTANCE_H;                    MENUStringAttr.wY = _MENU_GetSubMenuNormalStartV(hMenu) + MENU_STRING_DISTANCE_V + bMenuIndex*MENU_ITEM_HEIGHT+((MENU_ITEM_HEIGHT-GDI_GetStringHeight(aMENUCheckSymbol)) >> 1);                    GDI_DrawString_909(0, &MENUStringAttr, aMENUCheckSymbol);                }            }        }    }}WORD _MENU_GetSubMenuNormalStartH(HMENU hMenu){    if (_pMENUSubMenu[hMenu]->wStartX == MENU_START_X_OPTIMIZED)    {        return _pMENUCurrentMenu[hMenu]->wStartX+_MENU_GetMenuWidth(_pMENUCurrentMenu[hMenu])+MENU_SUBMENU_DISTANCE;    }    else    {        return _pMENUSubMenu[hMenu]->wStartX;    }    }WORD _MENU_GetSubMenuNormalStartV(HMENU hMenu){    if (_pMENUSubMenu[hMenu]->wStartY == MENU_START_Y_OPTIMIZED)    {        return _pMENUCurrentMenu[hMenu]->wStartY;    }    else    {        return _pMENUSubMenu[hMenu]->wStartY;    }}void _MENU_GetMainMenuDisplayRect(HMENU hMenu, PARM_RECT *pMENURect){      BYTE bItem;    pMENURect->rect.wLeft = _pMENUCurrentMenu[hMenu]->wStartX;    pMENURect->rect.wTop = _pMENUCurrentMenu[hMenu]->wStartY;    pMENURect->rect.wRight = _pMENUCurrentMenu[hMenu]->wStartX+_MENU_GetMenuWidth(_pMENUCurrentMenu[hMenu])-1;            if ((_MainMenuDisplay[hMenu].bUpMark == TRUE) || (_MainMenuDisplay[hMenu].bDownMark == TRUE))    {        bItem = _MainMenuDisplay[hMenu].bMaxVisibleItem;            }    else    {        bItem = _pMENUCurrentMenu[hMenu]->bTotalItem;    }    pMENURect->rect.wBottom = _pMENUCurrentMenu[hMenu]->wStartY+bItem*MENU_ITEM_HEIGHT+MENU_STRING_DISTANCE_V*2-1;     if (_MainMenuDisplay[hMenu].bUpMark == TRUE)    {        pMENURect->rect.wTop -= MENU_SEPARATE_FRAME_THICKNESS;        pMENURect->rect.wTop -= MENU_UP_DOWN_ITEM_HEIGHT;    }        if (_MainMenuDisplay[hMenu].bDownMark == TRUE)    {        pMENURect->rect.wBottom += MENU_SEPARATE_FRAME_THICKNESS;        pMENURect->rect.wBottom += MENU_UP_DOWN_ITEM_HEIGHT;    } }void _MENU_GetSubMenuDisplayRect(HMENU hMenu, PARM_RECT *pMENURect){    BYTE bItem;    pMENURect->rect.wLeft = _MENU_GetSubMenuNormalStartH(hMenu);    pMENURect->rect.wTop = _MENU_GetSubMenuNormalStartV(hMenu);    pMENURect->rect.wRight = pMENURect->rect.wLeft + _MENU_GetMenuWidth(_pMENUSubMenu[hMenu]) - 1;    if ((_SubMenuDisplay[hMenu].bUpMark == TRUE) || (_SubMenuDisplay[hMenu].bDownMark == TRUE))    {        bItem = _SubMenuDisplay[hMenu].bMaxVisibleItem;            }    else    {        bItem = _pMENUSubMenu[hMenu]->bTotalItem;    }    pMENURect->rect.wBottom = _MENU_GetSubMenuNormalStartV(hMenu)+bItem*MENU_ITEM_HEIGHT+MENU_STRING_DISTANCE_V*2-1;         if (_SubMenuDisplay[hMenu].bUpMark == TRUE)    {        pMENURect->rect.wTop -= MENU_SEPARATE_FRAME_THICKNESS;        pMENURect->rect.wTop -= MENU_UP_DOWN_ITEM_HEIGHT;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -