硬汉嵌入式论坛

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

[emWin] RADIO控件换肤问题

[复制链接]

4

主题

17

回帖

4

积分

新手上路

积分
4
发表于 2016-1-5 20:06:40 | 显示全部楼层 |阅读模式
仿照手册里列举的例子,简单试验一下emWin的换肤功能,代码如下,
    RADIO_GetSkinFlexProps(&pProps, RADIO_SKINPROPS_CHECKED);
    pProps.aColorButton[0] = GUI_GREEN;
    pProps.aColorButton[3] = GUI_RED;
    pProps.ButtonSize = 60;
    RADIO_SetSkinFlexProps(&pProps, 0);
    WM_InvalidateWindow(hWin);
现在遇到的问题是RADIO_SKINPROPS_CHECKED这个宏定义都找不到,改成0倒是可以编译通过了,可是控件没有变化(我是在vs环境下进行仿真的)。
请帮忙看一下,谢谢。
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115694
QQ
发表于 2016-1-6 00:35:54 | 显示全部楼层
参考官方这两个例子中自定义皮肤的设置:http://www.armbbs.cn/forum.php?mod=viewthread&tid=7870
回复

使用道具 举报

4

主题

17

回帖

4

积分

新手上路

积分
4
 楼主| 发表于 2016-1-7 17:07:20 | 显示全部楼层
我使用别的控件实验了一下,发现在换肤前需要调用XXX_SetSkin()函数,比如下面的代码就可以改变BUTTON的外观。
          BUTTON_SetSkin(hItem, BUTTON_SKIN_FLEX);     //需加上此句才能正确显示
          BUTTON_GetSkinFlexProps(&BUTTON_pProps,BUTTON_SKINFLEX_PI_ENABLED);
          BUTTON_pProps.aColorFrame[0]=GUI_GREEN;
          BUTTON_pProps.aColorFrame[1]=GUI_GREEN;
          BUTTON_pProps.Radius=10;
          BUTTON_SetSkinFlexProps(&BUTTON_pProps,BUTTON_SKINFLEX_PI_ENABLED);
但是,奇怪的是,我仿照这种做法对RADIO的外观进行更改,编译通过,运行后会死机! 注释掉RADIO_SetSkin(hItem, RADIO_SKIN_FLEX);后可以运行,可是皮肤就没法更改了。

//    RADIO_SetSkin(hItem, RADIO_SKIN_FLEX);
          RADIO_GetSkinFlexProps(&RADIO_pProps, RADIO_SKINFLEX_PI_PRESSED);
          RADIO_pProps.aColorButton[0] = GUI_GREEN;
          RADIO_pProps.ButtonSize = 10;
          RADIO_SetSkinFlexProps(&RADIO_pProps, RADIO_SKINFLEX_PI_PRESSED);
死机的原因大概是指针错误或者空指针之类的,是我调用的不对吗?还是说5.22对RADIO控件的支持存在问题?
回复

使用道具 举报

1万

主题

7万

回帖

11万

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
115694
QQ
发表于 2016-1-8 10:27:12 | 显示全部楼层

回 chinn 的帖子

chinn:我使用别的控件实验了一下,发现在换肤前需要调用XXX_SetSkin()函数,比如下面的代码就可以改变BUTTON的外观。
          BUTTON_SetSkin(hItem, BUTTON_SKIN_FLEX);     //需加上此句才能正确显示
  .. (2016-01-07 17:07) 
没问题的,估计是哪里设置错误造成的。
回复

使用道具 举报

4

主题

17

回帖

4

积分

新手上路

积分
4
 楼主| 发表于 2016-1-8 10:51:45 | 显示全部楼层

回 eric2013 的帖子

eric2013:

没问题的,估计是哪里设置错误造成的。
您说的是对的,我现在换了一种方法,在创建界面之前调用RARIO_SetDefaultSkin()函数,然后简单更改皮肤的参数,就能实现功能了,不过这样有个缺点就是所有Radio控件都被修改了。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-5-13 06:25 , Processed in 0.394693 second(s), 24 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2023, Tencent Cloud.

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