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

📄 toolbar.c

📁 ct952 source code use for Digital Frame Photo
💻 C
📖 第 1 页 / 共 2 页
字号:
    default:
        break;
    }
	
	if (_pToolBar[hToolBar]->bStyle == TOOLBAR_STYLE_VERTICAL)
	{
		IconStringAttr.wX = _pToolBar[hToolBar]->wStartX+((_pToolBar[hToolBar]->bIconWidth-GDI_GetStringWidth(_pToolBar[hToolBar]->pIcon[(_ToolBarCursor[hToolBar].bPos)].pwString))>>1);
		IconStringAttr.wY = _pToolBar[hToolBar]->wStartY+_ToolBarCursor[hToolBar].bPos*_pToolBar[hToolBar]->bIconHeight+_ToolBarCursor[hToolBar].bPos*TOOLBAR_ICON_ICON_DISTANCE+((_pToolBar[hToolBar]->bIconHeight-GDI_GetStringHeight(_pToolBar[hToolBar]->pIcon[(_ToolBarCursor[hToolBar].bPos)].pwString))>>1);
	}
	else if (_pToolBar[hToolBar]->bStyle == TOOLBAR_STYLE_HORIZONTAL)
	{
		IconStringAttr.wX = _pToolBar[hToolBar]->wStartX+_ToolBarCursor[hToolBar].bPos*_pToolBar[hToolBar]->bIconWidth+(_ToolBarCursor[hToolBar].bPos)*TOOLBAR_ICON_ICON_DISTANCE+((_pToolBar[hToolBar]->bIconWidth-GDI_GetStringWidth(_pToolBar[hToolBar]->pIcon[(_ToolBarCursor[hToolBar].bPos)].pwString))>>1);
		IconStringAttr.wY = _pToolBar[hToolBar]->wStartY+((_pToolBar[hToolBar]->bIconHeight-GDI_GetStringHeight(_pToolBar[hToolBar]->pIcon[(_ToolBarCursor[hToolBar].bPos)].pwString))>>1);		
	}

	GDI_FillRect(0, &Rect);				
	GDI_DrawString(0, &IconStringAttr, _pToolBar[hToolBar]->pIcon[(_ToolBarCursor[hToolBar].bPos)].pwString);

#else
    switch (bType)
    {
    case ICON_CURSOR_TYPE_NORMAL:
        GDI_ChangePALEntry(_pToolBar[hToolBar]->pIcon[(_ToolBarCursor[hToolBar].bPos)].bBGPaletteIndex, TOOLBAR_PALETTE_COLOR_ICON_NORMAL_BACKGROUND, FALSE);
        break;
    case ICON_CURSOR_TYPE_HIGHLIGHT:
        _ToolBarCursor[hToolBar].bType = ICON_CURSOR_TYPE_HIGHLIGHT;
        GDI_ChangePALEntry(_pToolBar[hToolBar]->pIcon[(_ToolBarCursor[hToolBar].bPos)].bBGPaletteIndex, TOOLBAR_PALETTE_COLOR_ICON_HIGHLIGHT_BACKGROUND, FALSE);
        break;
    case ICON_CURSOR_TYPE_PRESSED:
        _ToolBarCursor[hToolBar].bType = ICON_CURSOR_TYPE_PRESSED;
        GDI_ChangePALEntry(_pToolBar[hToolBar]->pIcon[(_ToolBarCursor[hToolBar].bPos)].bBGPaletteIndex, TOOLBAR_PALETTE_COLOR_ICON_PRESSED_BACKGROUND, FALSE);
        break;
    default:
        break;
    }

#endif //SUPPORT_TEXT_TOOLBAR
    _TOOLBAR_DrawIconFrame(hToolBar, bType);
}

//***************************************************************************
//  Function    :   TOOLBAR_ProcessKey
//  Abstract    :   
//  Arguments   :   none.
//  Return      :   
//  Side Effect :   none.
//  Notes       :   
//***************************************************************************
WORD TOOLBAR_ProcessKey(HTOOLBAR hToolBar, BYTE bKey)
{
    if (_pToolBar[hToolBar] == NULL)
        return ICON_ACTOIN_NONE;

    //Return the ID of the menu item. The control flow can do the exact action according to the ID.
    switch (bKey)
    {
    case KEY_LEFT:
        if (_pToolBar[hToolBar]->bStyle == TOOLBAR_STYLE_HORIZONTAL)
        {
            if (_ToolBarCursor[hToolBar].bPos != 0)
            {
                _TOOLBAR_IconAction(hToolBar, ICON_ACTOIN_PREVIOUS);
            }
        }
        break;
    case KEY_RIGHT:
        if (_pToolBar[hToolBar]->bStyle == TOOLBAR_STYLE_HORIZONTAL)
        {
            if (_ToolBarCursor[hToolBar].bPos != (_pToolBar[hToolBar]->bTotalIcon-1))
            {
                _TOOLBAR_IconAction(hToolBar, ICON_ACTOIN_NEXT);                
            }
        }
        else if (_pToolBar[hToolBar]->bStyle == TOOLBAR_STYLE_VERTICAL)
        {       
			if (_pToolBar[hToolBar]->pIcon[(_ToolBarCursor[hToolBar].bPos)].bIconType == ICON_TYPE_POPMENU)
			{
				TOOLBAR_UpdateCursor(hToolBar, ICON_CURSOR_TYPE_PRESSED);
				return (ICON_ACTION_ACTIVATE_MENU << 8);
			}
        }
        break;
    case KEY_UP:
        if (_pToolBar[hToolBar]->bStyle == TOOLBAR_STYLE_VERTICAL)
        {
            if (_ToolBarCursor[hToolBar].bPos != 0)
            {
                _TOOLBAR_IconAction(hToolBar, ICON_ACTOIN_PREVIOUS);
            }
#ifdef SETUP_KEY_UP_DOWN_TOGGLE_OPTIONS
            else
            {
                //Go to the first icon
                _TOOLBAR_IconAction(hToolBar, ICON_ACTOIN_GO_TO_LAST);
            }
#endif
        }
		else if (_pToolBar[hToolBar]->bStyle == TOOLBAR_STYLE_HORIZONTAL)
		{
			//Move the cursor from menu to the icon

		}
        break;
    case KEY_DOWN:
        if (_pToolBar[hToolBar]->bStyle == TOOLBAR_STYLE_VERTICAL)
        {
            if (_ToolBarCursor[hToolBar].bPos != (_pToolBar[hToolBar]->bTotalIcon-1))
            {
                _TOOLBAR_IconAction(hToolBar, ICON_ACTOIN_NEXT);
            }
#ifdef SETUP_KEY_UP_DOWN_TOGGLE_OPTIONS
            else
            {
                //Go to the first icon
                _TOOLBAR_IconAction(hToolBar, ICON_ACTOIN_GO_TO_FIRST);
            }
#endif
        }
		else if (_pToolBar[hToolBar]->bStyle == TOOLBAR_STYLE_HORIZONTAL)
		{
			if (_pToolBar[hToolBar]->pIcon[(_ToolBarCursor[hToolBar].bPos)].bIconType == ICON_TYPE_POPMENU)
			{
				TOOLBAR_UpdateCursor(hToolBar, ICON_CURSOR_TYPE_PRESSED);
				return (ICON_ACTION_ACTIVATE_MENU << 8);
			}
		}
        break;
    case KEY_PLAY:
    case KEY_ENTER:
        if (_pToolBar[hToolBar]->pIcon[(_ToolBarCursor[hToolBar].bPos)].bIconType == ICON_TYPE_BUTTON)
        {
            return ((ICON_ACTION_PROCESS_ICON << 8 ) | _pToolBar[hToolBar]->pIcon[(_ToolBarCursor[hToolBar].bPos)].bIconID);
        }
        break;
    default:
        break;
    }

    return ICON_ACTOIN_NONE;
}

void _TOOLBAR_IconAction(HTOOLBAR hToolBar, BYTE bAction)
{
#ifdef SUPPORT_TEXT_TOOLBAR
	TOOLBAR_UpdateCursor(hToolBar, ICON_CURSOR_TYPE_NORMAL);
#else
    //Clear the highlight
    GDI_ChangePALEntry(_pToolBar[hToolBar]->pIcon[(_ToolBarCursor[hToolBar].bPos)].bBGPaletteIndex, TOOLBAR_PALETTE_COLOR_ICON_NORMAL_BACKGROUND, FALSE);
#endif //SUPPORT_TEXT_TOOLBAR

    if (_pToolBar[hToolBar]->pIcon[(_ToolBarCursor[hToolBar].bPos)].Exit_Func_Ptr != NULL)
    {
        //Call the icon's "Exit" callback function.
        _pToolBar[hToolBar]->pIcon[(_ToolBarCursor[hToolBar].bPos)].Exit_Func_Ptr();
    }

    _TOOLBAR_DrawIconFrame(hToolBar, ICON_CURSOR_TYPE_NORMAL);

    if (bAction == ICON_ACTOIN_PREVIOUS)
    {
        _ToolBarCursor[hToolBar].bPos--;
    }
    else if (bAction == ICON_ACTOIN_NEXT)
    {
        _ToolBarCursor[hToolBar].bPos++;
    }
#ifdef SETUP_KEY_UP_DOWN_TOGGLE_OPTIONS
    else if (bAction == ICON_ACTOIN_GO_TO_FIRST)
    {
        _ToolBarCursor[hToolBar].bPos = 0;
    }
    else if (bAction == ICON_ACTOIN_GO_TO_LAST)
    {
        _ToolBarCursor[hToolBar].bPos = _pToolBar[hToolBar]->bTotalIcon-1;
    }
#endif //SETUP_KEY_UP_DOWN_TOGGLE_OPTIONS

    //Show highlight
#ifdef SUPPORT_TEXT_TOOLBAR
	TOOLBAR_UpdateCursor(hToolBar, ICON_CURSOR_TYPE_HIGHLIGHT);
#else
    GDI_ChangePALEntry(_pToolBar[hToolBar]->pIcon[(_ToolBarCursor[hToolBar].bPos)].bBGPaletteIndex, TOOLBAR_PALETTE_COLOR_ICON_HIGHLIGHT_BACKGROUND, FALSE);
#endif //SUPPORT_TEXT_TOOLBAR

    if (_pToolBar[hToolBar]->pIcon[(_ToolBarCursor[hToolBar].bPos)].Initial_Func_Ptr != NULL)
    {
        //Call the icon's "initial" callback function.
        _pToolBar[hToolBar]->pIcon[(_ToolBarCursor[hToolBar].bPos)].Initial_Func_Ptr(_ToolBarCursor[hToolBar].bType);
    }

    _TOOLBAR_DrawIconFrame(hToolBar, ICON_CURSOR_TYPE_HIGHLIGHT);
}

void TOOLBAR_DeleteToolBar(HTOOLBAR hToolBar, BYTE bClearBackground)
{
    BYTE i;
    for (i = 0; i < MAX_SUPPORT_TOOLBAR_HANDLE_NUM; i++)
    {
        if (_hToolBarStack[i] == hToolBar)
        {
            _hToolBarStack[i] = TOOLBAR_HANDLE_FREE;

            //clear the background
            if (bClearBackground)
            {
                _TOOLBAR_ClearBackground(hToolBar);
            }

            return;
        }
    }
}

void _TOOLBAR_DrawIconFrame(HTOOLBAR hToolBar, BYTE bType)
{
    PARM_FRAME IconFrame;
    
    if (_pToolBar[hToolBar]->bStyle == TOOLBAR_STYLE_VERTICAL)
    {
        IconFrame.rect.wTop = _pToolBar[hToolBar]->wStartY+_ToolBarCursor[hToolBar].bPos*_pToolBar[hToolBar]->bIconHeight+_ToolBarCursor[hToolBar].bPos*TOOLBAR_ICON_ICON_DISTANCE-TOOLBAR_ICON_FRAME_THICKNESS;
        IconFrame.rect.wLeft = _pToolBar[hToolBar]->wStartX-TOOLBAR_ICON_FRAME_THICKNESS;
    }
    else if (_pToolBar[hToolBar]->bStyle == TOOLBAR_STYLE_HORIZONTAL)
    {
		IconFrame.rect.wTop = _pToolBar[hToolBar]->wStartY-TOOLBAR_ICON_FRAME_THICKNESS;
        IconFrame.rect.wLeft = _pToolBar[hToolBar]->wStartX+_ToolBarCursor[hToolBar].bPos*_pToolBar[hToolBar]->bIconWidth+_ToolBarCursor[hToolBar].bPos*TOOLBAR_ICON_ICON_DISTANCE-TOOLBAR_ICON_FRAME_THICKNESS;
    }

    IconFrame.rect.wRight = IconFrame.rect.wLeft+_pToolBar[hToolBar]->bIconWidth+TOOLBAR_ICON_FRAME_THICKNESS*2;
    IconFrame.rect.wBottom = IconFrame.rect.wTop+_pToolBar[hToolBar]->bIconHeight+TOOLBAR_ICON_FRAME_THICKNESS*2;

    if (bType == ICON_CURSOR_TYPE_HIGHLIGHT)
    {
        IconFrame.bColorBright = TOOLBAR_PALETTE_ENTRY_NORMAL_FRAME_BRIGHT;
        IconFrame.bColorDark = TOOLBAR_PALETTE_ENTRY_NORMAL_FRAME_DARK;    
        IconFrame.bStyle = FRAME_POP;
    }
    else if (bType == ICON_CURSOR_TYPE_PRESSED)
    {
        IconFrame.bColorBright = TOOLBAR_PALETTE_ENTRY_NORMAL_FRAME_BRIGHT;
        IconFrame.bColorDark = TOOLBAR_PALETTE_ENTRY_NORMAL_FRAME_DARK;    
        IconFrame.bStyle = FRAME_PUSH;
    }
    else
    {
        IconFrame.bColorBright = TOOLBAR_PALETTE_ENTRY_BIG_BACKGROUND;
        IconFrame.bColorDark = TOOLBAR_PALETTE_ENTRY_BIG_BACKGROUND;    
        IconFrame.bStyle = FRAME_POP;
    }
    IconFrame.bColorCenter = TOOLBAR_PALETTE_ENTRY_SEPARATE_FRAME_CENTER;
    IconFrame.bThickness = TOOLBAR_ICON_FRAME_THICKNESS;
    
    GDI_DrawFrame_909(0, &IconFrame);
}


void _TOOLBAR_ClearBackground(HTOOLBAR hToolBar)
{
    PARM_RECT Rect;

    Rect.bColor = _bTOOLBARBackgroundColor[hToolBar];
    Rect.rect.wLeft = _pToolBar[hToolBar]->wStartX-TOOLBAR_ICON_BACKGROUND_DISTANCE-TOOLBAR_FRAME_THICKNESS;
    Rect.rect.wTop = _pToolBar[hToolBar]->wStartY-TOOLBAR_ICON_BACKGROUND_DISTANCE-TOOLBAR_FRAME_THICKNESS;
    if (_pToolBar[hToolBar]->bStyle == TOOLBAR_STYLE_VERTICAL)
    {
        Rect.rect.wRight = _pToolBar[hToolBar]->wStartX+_pToolBar[hToolBar]->bIconWidth+TOOLBAR_ICON_BACKGROUND_DISTANCE+TOOLBAR_FRAME_THICKNESS-1;
        Rect.rect.wBottom = _pToolBar[hToolBar]->wStartY+_pToolBar[hToolBar]->bTotalIcon*_pToolBar[hToolBar]->bIconHeight+TOOLBAR_ICON_ICON_DISTANCE*(_pToolBar[hToolBar]->bTotalIcon-1)+TOOLBAR_ICON_BACKGROUND_DISTANCE+TOOLBAR_FRAME_THICKNESS-1;
    }
    else if (_pToolBar[hToolBar]->bStyle == TOOLBAR_STYLE_HORIZONTAL)
    {
        Rect.rect.wRight = _pToolBar[hToolBar]->wStartX+_pToolBar[hToolBar]->bTotalIcon*_pToolBar[hToolBar]->bIconWidth+TOOLBAR_ICON_ICON_DISTANCE*(_pToolBar[hToolBar]->bTotalIcon-1)+TOOLBAR_ICON_BACKGROUND_DISTANCE+TOOLBAR_FRAME_THICKNESS-1;
        Rect.rect.wBottom = _pToolBar[hToolBar]->wStartY+_pToolBar[hToolBar]->bIconHeight+TOOLBAR_ICON_BACKGROUND_DISTANCE+TOOLBAR_FRAME_THICKNESS-1;
    }

    GDI_FillRect(0, &Rect);
}

⌨️ 快捷键说明

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