Brew MP mod1中listwidget不能显示背景

在BrewMPmod1中,ListWidget的背景色无法正常显示。通过对比宏IWIDGET_SetBGColor与函数IWidget_SetBGColor的区别,发现是由于MAKE_RGB宏定义不同导致颜色值传递错误。加入Alpha通道后,背景色显示正常。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Brew MP mod1中listwidget不能显示背景

    在mod1应用中添加入一个ListWidget,对其背景色进行设置,
代码如下:
IWidget_SetBGColor(pMe->piListWidget, MAKE_RGB(90, 183, 83));
设置完以后,在模拟器上运行程序,结果发现,listwidget就只有
背景不能正确显示。单步调试,检查函数返回值,函数执行是成功的。
仔细对比在mod中的代码,发现在mod中使用的是如下代码:
IWIDGET_SetBGColor(pMe->piListWidget, MAKE_RGB(90, 183, 83));
而IWIDGET_SetBGColor只是在AEEWProperties.h中定义的一个宏。
该宏的原型为:
#define IWIDGET_SetBGColor                 IWidget_SetBGColor
显然该宏只是IWidget_SetBGColor的一个别名,可为什么直接使用
IWidget_SetBGColor本身不行呢?原来此处的玄机就在于该宏的头文
件AEEWProperties.h。其中有一个宏定义:
...
#ifdef MAKE_RGB
#undef MAKE_RGB
#endif
...
#define MAKE_RGB(r,g,b)       MAKE_RGBA(r,g,b,255)
原来在使用IWIDGET_SetBGColor时使用的MAKE_RGB(90, 183, 83)会被
扩展成MAKE_RGBA(90, 183, 83, 255),在我们直接用
IWidget_SetBGColor却忽略了最后的alpha(255)值,看来在设置背
景的时候需要这个灰度值。事实也如此,当把mod1中的代码改成
IWidget_SetBGColor(pMe->piListWidget, MAKE_RGB(90, 183, 83, 255));
后,程序成功显示出listwidget的背景色!

    在mod1中由于不能使用AEEStdLib.h头文件,因此诸如
EEWProperties.h的头文件不能使用。由此当从mod到mod1进行转换时,
可能会遇到很多“莫名其妙”的问题,比如MALLOC、DBGPRINTF等helper
函数不能使用,开发者在开发中应多多小心,加以区别利用。在某些
环境下需要自己实现一些helper函数,笔者在开发中就重新实现了
MALLOC、STRTOWSTR等宏或方法。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值