自定义ListBox选中某一行之后高亮的问题

我是一个小胖子 2009-12-24 03:39:27
自定义ListBox的字体颜色,和字体高亮之后的颜色都能获得系统的了。
可是 listbox 的某一行被选中之后 覆盖这行的颜色和其它行的不一样了 我想让这行颜色也是系统的 怎么获得? 不知道我表达的清楚不?
...全文
415 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
[Quote=引用 5 楼 arthersophy 的回复:]
给你一段系统画高亮的代码,实际上就是用了几张图。。
MAknsSkinInstance* skin = AknsUtils::SkinInstance ();
TRect tl = GetRect(aOuterRect.iTl, rect.iTl);
TRect tr = GetRect(TPoint(aOuterRect.iBr.iX, aOuterRect.iTl.iY), TPoint(rect.iBr.iX, rect.iTl.iY));
TRect bl= GetRect(TPoint(aOuterRect.iTl.iX, aOuterRect.iBr.iY), TPoint(rect.iTl.iX, rect.iBr.iY));
TRect br= GetRect(aOuterRect.iBr, rect.iBr);
TRect top= GetRect(tl.iBr, tr.iTl);
TRect bottom= GetRect(bl.iBr, br.iTl);
TRect left= GetRect(tl.iBr, bl.iTl);
TRect right= GetRect(tr.iBr, br.iTl);
AknsDrawUtils::DrawFrame(skin, aGc, tl, tl, KAknsIIDQsnFrList, KAknsIIDQsnFrListCornerTl);
AknsDrawUtils::DrawFrame(skin, aGc, tr, tr, KAknsIIDQsnFrList, KAknsIIDQsnFrListCornerTr);
AknsDrawUtils::DrawFrame(skin, aGc, bl, bl, KAknsIIDQsnFrList, KAknsIIDQsnFrListCornerBl);
AknsDrawUtils::DrawFrame(skin, aGc, br, br, KAknsIIDQsnFrList, KAknsIIDQsnFrListCornerBr);
AknsDrawUtils::DrawFrame(skin, aGc, top, top, KAknsIIDQsnFrList, KAknsIIDQsnFrListSideT);
AknsDrawUtils::DrawFrame(skin, aGc, bottom, bottom, KAknsIIDQsnFrList, KAknsIIDQsnFrListSideB);
AknsDrawUtils::DrawFrame(skin, aGc, left, left, KAknsIIDQsnFrList, KAknsIIDQsnFrListSideL);
AknsDrawUtils::DrawFrame(skin, aGc, right, right, KAknsIIDQsnFrList, KAknsIIDQsnFrListSideR);
AknsDrawUtils::DrawFrame(skin, aGc, rect, rect, KAknsIIDQsnFrList, KAknsIIDQsnFrListCenter);
[/Quote]

aOuterRect rect分别是什么啊?
  • 打赏
  • 举报
回复
[Quote=引用 3 楼 yushao_rong 的回复:]
你可以在Draw函数里做判断呀,当某一项为焦点时把颜色设成系统的就OK了
[/Quote]

我就是不知道怎么获得系统那个高亮颜色是什么?怎么获得?
柯枫 2010-01-07
  • 打赏
  • 举报
回复
你可以在Draw函数里做判断呀,当某一项为焦点时把颜色设成系统的就OK了
  • 打赏
  • 举报
回复
我都是自定义的,不是用的系统的,我感觉是获取颜色,但是不知道怎么获取。就像获取系统字体颜色一样。
漁_夫 2010-01-07
  • 打赏
  • 举报
回复
给你一段系统画高亮的代码,实际上就是用了几张图。。
MAknsSkinInstance* skin = AknsUtils::SkinInstance ();
TRect tl = GetRect(aOuterRect.iTl, rect.iTl);
TRect tr = GetRect(TPoint(aOuterRect.iBr.iX, aOuterRect.iTl.iY), TPoint(rect.iBr.iX, rect.iTl.iY));
TRect bl= GetRect(TPoint(aOuterRect.iTl.iX, aOuterRect.iBr.iY), TPoint(rect.iTl.iX, rect.iBr.iY));
TRect br= GetRect(aOuterRect.iBr, rect.iBr);
TRect top= GetRect(tl.iBr, tr.iTl);
TRect bottom= GetRect(bl.iBr, br.iTl);
TRect left= GetRect(tl.iBr, bl.iTl);
TRect right= GetRect(tr.iBr, br.iTl);
AknsDrawUtils::DrawFrame(skin, aGc, tl, tl, KAknsIIDQsnFrList, KAknsIIDQsnFrListCornerTl);
AknsDrawUtils::DrawFrame(skin, aGc, tr, tr, KAknsIIDQsnFrList, KAknsIIDQsnFrListCornerTr);
AknsDrawUtils::DrawFrame(skin, aGc, bl, bl, KAknsIIDQsnFrList, KAknsIIDQsnFrListCornerBl);
AknsDrawUtils::DrawFrame(skin, aGc, br, br, KAknsIIDQsnFrList, KAknsIIDQsnFrListCornerBr);
AknsDrawUtils::DrawFrame(skin, aGc, top, top, KAknsIIDQsnFrList, KAknsIIDQsnFrListSideT);
AknsDrawUtils::DrawFrame(skin, aGc, bottom, bottom, KAknsIIDQsnFrList, KAknsIIDQsnFrListSideB);
AknsDrawUtils::DrawFrame(skin, aGc, left, left, KAknsIIDQsnFrList, KAknsIIDQsnFrListSideL);
AknsDrawUtils::DrawFrame(skin, aGc, right, right, KAknsIIDQsnFrList, KAknsIIDQsnFrListSideR);
AknsDrawUtils::DrawFrame(skin, aGc, rect, rect, KAknsIIDQsnFrList, KAknsIIDQsnFrListCenter);
connect_007 2009-12-24
  • 打赏
  • 举报
回复
在appui的ConstructL方法中调用
{
BaseConstructL(EAknEnableSkin);
}
就可以了。

3,119

社区成员

发帖
与我相关
我的任务
社区描述
塞班系统(Symbian系统)是塞班公司为手机而设计的操作系统,它的前身是英国宝意昂公司的 EP ( Electronic Piece of cheese)操作系统。
社区管理员
  • Symbian社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧