硬汉嵌入式论坛

 找回密码
 立即注册
查看: 2259|回复: 4
收起左侧

[emWin] DropDown控件自定义皮肤问题

[复制链接]

14

主题

35

回帖

14

积分

初级会员

积分
14
发表于 2017-8-9 15:32:04 | 显示全部楼层 |阅读模式
创建了一个DropDown控件,使用了自定义皮肤,但是只显示GUI_GRAY一种颜色,对聚焦和展开都没有反应,不知为何?
请版主赐教,谢谢~
/********************其自定义皮肤函数***************************/

static int _DrawSkin_DropDown(const WIDGET_ITEM_DRAW_INFO *pDrawItemInfo)
{
    GUI_RECT Rect;

    Rect.x0 = pDrawItemInfo->x0;
    Rect.y0 = pDrawItemInfo->y0;
    Rect.x1 = pDrawItemInfo->x1;
    Rect.y1 = pDrawItemInfo->y1;

    switch (pDrawItemInfo->Cmd)
    {            
        case WIDGET_ITEM_DRAW_BACKGROUND:
            if (pDrawItemInfo->ItemIndex == DROPDOWN_SKINFLEX_PI_FOCUSED)
            {
                GUI_SetColor(GUI_WHITE);
                GUI_AA_FillRoundedRect(Rect.x0, Rect.y0, Rect.x1, Rect.y1, 0);
            }
            else if (pDrawItemInfo->ItemIndex == DROPDOWN_SKINFLEX_PI_EXPANDED)
            {
                GUI_SetColor(GUI_BLUE);
                GUI_AA_FillRoundedRect(Rect.x0, Rect.y0, Rect.x1, Rect.y1, 0);
            }
            else
            {
                GUI_SetColor(GUI_GRAY);      // 只显示这里的颜色
                GUI_AA_FillRoundedRect(Rect.x0, Rect.y0, Rect.x1, Rect.y1, 0);
            }
            break;

        default:
            return DROPDOWN_DrawSkinFlex(pDrawItemInfo);
    }
    return 0;
}

/**************DropDown控件建立代码*********************/

static DROPDOWN_Handle    hDropDown;
hDropDown = DROPDOWN_CreateEx(100, 62, 90, 30, pMsg->hWin, WM_CF_SHOW, 0, ID_DROPDOWN_1);
DROPDOWN_SetFont(hDropDown, GUI_FONT_24B_ASCII);
DROPDOWN_AddString(hDropDown, "Item1");
DROPDOWN_AddString(hDropDown, "Item2");
DROPDOWN_AddString(hDropDown, "Item3");            
DROPDOWN_SetListHeight(hDropDown, 90);
DROPDOWN_SetSkin(hDropDown, _DrawSkin_DropDown);
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117635
QQ
发表于 2017-8-9 16:03:24 | 显示全部楼层
先测试下改变状态后是否进入相应的皮肤回调了。
回复

使用道具 举报

14

主题

35

回帖

14

积分

初级会员

积分
14
 楼主| 发表于 2017-8-9 16:48:39 | 显示全部楼层

回 eric2013 的帖子

eric2013:先测试下改变状态后是否进入相应的皮肤回调了。 (2017-08-09 16:03) 
if (pDrawItemInfo->ItemIndex == DROPDOWN_SKINFLEX_PI_FOCUSED)
else if (pDrawItemInfo->ItemIndex == DROPDOWN_SKINFLEX_PI_EXPANDED)

这两个在聚焦和展开的时候都分别进不去~是哪里出了问题呢?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
117635
QQ
发表于 2017-8-10 02:14:58 | 显示全部楼层

回 mumuha 的帖子

mumuha:if (pDrawItemInfo->ItemIndex == DROPDOWN_SKINFLEX_PI_FOCUSED)
else if (pDrawItemInfo->ItemIndex == DROPDOWN_SKINFLEX_PI_EXPANDED)

这两个在聚焦和展开的时候都分别进不去~是哪里出了问题呢? (2017-08-09 16:48)
我测试了下,进入灰色的那个也是有问题的,pDrawItemInfo->ItemIndex的数值不对。

还是使用函数
XXXXX_GetSkinFlexProps();
XXXXX_SetSkinFlexProps();设置吧。

皮肤回调函数那个还是有些麻烦,不像按钮控件那么简单。
回复

使用道具 举报

14

主题

35

回帖

14

积分

初级会员

积分
14
 楼主| 发表于 2017-8-10 10:33:41 | 显示全部楼层

回 eric2013 的帖子

eric2013:我测试了下,进入灰色的那个也是有问题的,pDrawItemInfo->ItemIndex的数值不对。

还是使用函数
XXXXX_GetSkinFlexProps();
....... (2017-08-10 02:14) 
主要我还想改dropdown那个 向下箭头 变成 向右箭头 skinflexprops那些貌似只能改箭头颜色[s:122]
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|小黑屋|Archiver|手机版|硬汉嵌入式论坛

GMT+8, 2025-8-19 15:17 , Processed in 0.039928 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

快速回复 返回顶部 返回列表