硬汉嵌入式论坛

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

[emWin] 当按钮控件被选中的时候,怎么修改背景颜色和边框颜色

[复制链接]

9

主题

24

回帖

51

积分

初级会员

积分
51
发表于 2016-4-29 10:28:34 | 显示全部楼层 |阅读模式
当按钮控件被选中的时候,怎么修改背景颜色和边框颜色,就是不使用默认的背景颜色和边框颜色,有人了解过不,教导一下
有例程不
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107414
QQ
发表于 2016-4-29 11:58:00 | 显示全部楼层
你的是怎么控制按钮选中的,是通过触摸么,还是外部的实体按键。
回复

使用道具 举报

9

主题

24

回帖

51

积分

初级会员

积分
51
 楼主| 发表于 2016-4-29 13:34:30 | 显示全部楼层

回 eric2013 的帖子

eric2013:你的是怎么控制按钮选中的,是通过触摸么,还是外部的实体按键。 (2016-04-29 11:58) 
实体按键
回复

使用道具 举报

9

主题

24

回帖

51

积分

初级会员

积分
51
 楼主| 发表于 2016-4-29 15:28:36 | 显示全部楼层

回 eric2013 的帖子

eric2013:你的是怎么控制按钮选中的,是通过触摸么,还是外部的实体按键。 (2016-04-29 11:58) 
还有的就是,我使用的是不是默认皮肤,这该如何弄
回复

使用道具 举报

2

主题

15

回帖

21

积分

新手上路

积分
21
发表于 2016-4-29 15:41:49 | 显示全部楼层
重写回调函数
case WM_SET_FOCUS:
        if (pMsg->Data.v == 1) {
            BUTTON_SetBkColor(pMsg->hWin, BUTTON_CI_UNPRESSED, GUI_DARKRED);
            BUTTON_SetTextColor(pMsg->hWin, BUTTON_CI_UNPRESSED, GUI_WHITE);
        }
        
        if (pMsg->Data.v == 0) {
            BUTTON_SetBkColor(pMsg->hWin, BUTTON_CI_UNPRESSED, 0xC0C0C0);
            BUTTON_SetTextColor(pMsg->hWin, BUTTON_CI_UNPRESSED, 0);
        }
回复

使用道具 举报

2

主题

15

回帖

21

积分

新手上路

积分
21
发表于 2016-4-29 15:42:14 | 显示全部楼层
/*
*********************************************************************************************************
*    函 数 名: _cbButton
*    功能说明: Button小工具的回调函数
*    形    参:无
*    返 回 值: 无
*********************************************************************************************************
*/
static void _cbButton(WM_MESSAGE * pMsg) {
    switch (pMsg->MsgId) {
    case WM_PID_STATE_CHANGED:
        if (((const WM_PID_STATE_CHANGED_INFO*)pMsg->Data.p)->State) {
            return;            // Do not call edit callback
        }
        break;
    case WM_SET_FOCUS:
        if (pMsg->Data.v == 1) {
            BUTTON_SetBkColor(pMsg->hWin, BUTTON_CI_UNPRESSED, GUI_DARKRED);
            BUTTON_SetTextColor(pMsg->hWin, BUTTON_CI_UNPRESSED, GUI_WHITE);
        }
        
        if (pMsg->Data.v == 0) {
            BUTTON_SetBkColor(pMsg->hWin, BUTTON_CI_UNPRESSED, 0xC0C0C0);
            BUTTON_SetTextColor(pMsg->hWin, BUTTON_CI_UNPRESSED, 0);
        }
        
    }
    if (_pButtonCallback) {
        _pButtonCallback(pMsg);
    }
}
回复

使用道具 举报

9

主题

24

回帖

51

积分

初级会员

积分
51
 楼主| 发表于 2016-4-29 16:12:24 | 显示全部楼层

回 dzf2222 的帖子

dzf2222:/*
*********************************************************************************************************
*    函 数 名: _cbButton
*    功能说明: Button小工具的回调函数
*    形   &nb .. (2016-04-29 15:42) 
好的  我试一下
回复

使用道具 举报

9

主题

24

回帖

51

积分

初级会员

积分
51
 楼主| 发表于 2016-4-29 16:20:13 | 显示全部楼层

回 dzf2222 的帖子

dzf2222:/*
*********************************************************************************************************
*    函 数 名: _cbButton
*    功能说明: Button小工具的回调函数
*    形   &nb .. (2016-04-29 15:42) 
这个好像在使用了皮肤之后没有效果,只能修改按钮上的字体颜色
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107414
QQ
发表于 2016-4-30 01:14:31 | 显示全部楼层

回 tanruiqiang 的帖子

tanruiqiang:这个好像在使用了皮肤之后没有效果,只能修改按钮上的字体颜色 (2016-04-29 16:20) 
要调用这个函数WM_SetCallback()进行重定义你创建的按钮。
不行就顺带把按钮回调函数的WM_PAINT消息也写出来。
回复

使用道具 举报

4

主题

16

回帖

28

积分

新手上路

我的梦想是不坐在电脑前

积分
28
发表于 2016-5-3 09:33:26 | 显示全部楼层
我也想问这个问题,但我的按钮控件不是回调函数,而是通过switch判断控件ID处理对应事件。这个要怎么实现物理按键选中改变颜色???
回复

使用道具 举报

1万

主题

6万

回帖

10万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
107414
QQ
发表于 2016-5-3 10:15:11 | 显示全部楼层

回 乞丐类 的帖子

乞丐类:我也想问这个问题,但我的按钮控件不是回调函数,而是通过switch判断控件ID处理对应事件。这个要怎么实现物理按键选中改变颜色??? (2016-05-03 09:33) 
button本身也是有回调函数的,你所说的是button所在父窗口的回调函数,
使用函数WM_SetCallback()可以重定义button的回调函数。
回复

使用道具 举报

336

主题

2042

回帖

3055

积分

版主

Rank: 7Rank: 7Rank: 7

积分
3055
发表于 2016-5-11 11:20:10 | 显示全部楼层
我有个简单的方法,放在main函数的初始部分,更改所有按钮的皮肤属性。你看看这几行代码:

    BUTTON_SetDefaultFocusColor(GUI_RED);
//    BUTTON_SetDefaultSkinClassic();
    BUTTON_SetDefaultSkin(BUTTON_SKIN_FLEX);
    BUTTON_SetDefaultFocusColor(GUI_RED);


BUTTON_GetSkinFlexProps(&amprops, BUTTON_SKINFLEX_PI_FOCUSSED);
Props.aColorFrame[0] = 0x007FB13C;
Props.aColorFrame[1] = 0x008FfF8F;
Props.aColorFrame[2] = 0x008FfF8F+0x00011111;
    Props.aColorUpper[0]+=50;
    Props.aColorUpper[1]+=50;
    Props.aColorLower[0]+=150;
    Props.aColorLower[1]+=150;
Props.Radius = 5;
BUTTON_SetSkinFlexProps(&amprops, BUTTON_SKINFLEX_PI_FOCUSSED);

BUTTON_GetSkinFlexProps(&amprops, BUTTON_SKINFLEX_PI_PRESSED);
    Props.aColorUpper[0]=0x24f02e+0x40;
    Props.aColorUpper[1]=0x24f02e+0x40;
    Props.aColorLower[0]=0x52f05a+0x50;
    Props.aColorLower[1]=0x52f05a+0x50;
Props.Radius = 5;
BUTTON_SetSkinFlexProps(&amprops, BUTTON_SKINFLEX_PI_PRESSED);

BUTTON_SetDefaultFont(GUI_FONT_16B_1);
回复

使用道具 举报

2

主题

25

回帖

1

积分

新手上路

积分
1
发表于 2017-3-31 14:26:15 | 显示全部楼层

回 caicaptain2 的帖子

caicaptain2:我有个简单的方法,放在main函数的初始部分,更改所有按钮的皮肤属性。你看看这几行代码:

    BUTTON_SetDefaultFocusColor(GUI_RED);
//    BUTTON_SetDefaultSkinClassic();
    BUTTON_SetDefaultSkin(BUTTON_ .. (2016-05-11 11:20) 
我也想到这种方法,但是不熟悉实现起来出现了错误。现在可以直接根据你的基础上做更改,谢谢!
回复

使用道具 举报

0

主题

1

回帖

0

积分

新手上路

积分
0
发表于 2017-8-14 13:12:25 | 显示全部楼层
[s:141]
回复

使用道具 举报

8

主题

59

回帖

83

积分

初级会员

积分
83
发表于 2017-8-15 09:39:53 | 显示全部楼层
[s:141] [s:141] [s:141] [s:141] [s:141] [s:141] [s:141] [s:141] [s:141]
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-30 10:11 , Processed in 0.326791 second(s), 32 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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