自定义TAB Symbian, by H_z.(转)

自定义TAB

Symbian, by H_z.

很早之前模仿UCWEB的。
今天有朋友要用到贴出来吧
先上图



代码:我直接上源文件了。
TabControls.h
TabControls.cpp
用法:
//TAB 控件
iCTabControls = CTabControls::NewL(aRect,this);

CArrayPtr< CGulIcon >* aTabiconArray = NULL;
aTabiconArray = new (ELeave) CAknIconArray(5);
CleanupStack::PushL( aTabiconArray );
CFbsBitmap* aBmp1 = NULL;
CFbsBitmap* aBmp2 = NULL;
CFbsBitmap* aBmp3 = NULL;
CFbsBitmap* aBmp4 = NULL;
CFbsBitmap* aBmp5 = NULL;

CFbsBitmap* aBmpMask1 = NULL;
CFbsBitmap* aBmpMask2 = NULL;
CFbsBitmap* aBmpMask3 = NULL;
CFbsBitmap* aBmpMask4 = NULL;
CFbsBitmap* aBmpMask5 = NULL;

CGulIcon* aIcon1 = NULL;
CGulIcon* aIcon2 = NULL;
CGulIcon* aIcon3 = NULL;
CGulIcon* aIcon4 = NULL;
CGulIcon* aIcon5 = NULL;

AknIconUtils::CreateIconLC(aBmp1, aBmpMask1, KTabsFileName,
EMbmTabdraw_aifTab1,EMbmTabdraw_aifTab1_mask);
AknIconUtils::SetSize(aBmp1, TSize(40,40), EAspectRatioPreserved);
AknIconUtils::SetSize(aBmpMask1, TSize(40,40), EAspectRatioPreserved);
aIcon1 = CGulIcon::NewL(aBmp1, aBmpMask1);
CleanupStack::Pop (2); // aBmp1 aBmpMask1
CleanupStack::PushL(aIcon1);
aTabiconArray->AppendL(aIcon1);
CleanupStack::Pop (aIcon1);

AknIconUtils::CreateIconLC(aBmp2, aBmpMask2, KTabsFileName,
EMbmTabdraw_aifTab2,EMbmTabdraw_aifTab2_mask);
AknIconUtils::SetSize(aBmp2, TSize(40,40), EAspectRatioNotPreserved);
AknIconUtils::SetSize(aBmpMask2, TSize(40,40), EAspectRatioNotPreserved);
aIcon2 = CGulIcon::NewL(aBmp2, aBmpMask2);
CleanupStack::Pop (2); // aBmp2 aBmpMask2
CleanupStack::PushL(aIcon2);
aTabiconArray->AppendL(aIcon2);
CleanupStack::Pop(aIcon2);

AknIconUtils::CreateIconLC(aBmp3, aBmpMask3, KTabsFileName,
EMbmTabdraw_aifTab3,EMbmTabdraw_aifTab3_mask);
AknIconUtils::SetSize(aBmp3, TSize(40,40), EAspectRatioNotPreserved);
AknIconUtils::SetSize(aBmpMask3, TSize(40,40), EAspectRatioNotPreserved);
aIcon3 = CGulIcon::NewL(aBmp3, aBmpMask3);
CleanupStack::Pop (2); // aBmp3 aBmpMask3
CleanupStack::PushL(aIcon3);
aTabiconArray->AppendL(aIcon3);
CleanupStack::Pop(aIcon3);

AknIconUtils::CreateIconLC(aBmp4, aBmpMask4, KTabsFileName,
EMbmTabdraw_aifTab4,EMbmTabdraw_aifTab4_mask);
AknIconUtils::SetSize(aBmp4, TSize(40,40), EAspectRatioNotPreserved);
AknIconUtils::SetSize(aBmp4, TSize(40,40), EAspectRatioNotPreserved);
aIcon4 = CGulIcon::NewL(aBmp4, aBmpMask4);
CleanupStack::Pop (2); // aBmp4 aBmpMask4
CleanupStack::PushL(aIcon4);
aTabiconArray->AppendL(aIcon4);
CleanupStack::Pop(aIcon4);

AknIconUtils::CreateIconLC(aBmp5, aBmpMask5, KTabsFileName,
EMbmTabdraw_aifTab5,EMbmTabdraw_aifTab5_mask);
AknIconUtils::SetSize(aBmp5, TSize(40,40), EAspectRatioNotPreserved);
AknIconUtils::SetSize(aBmpMask5, TSize(40,40), EAspectRatioNotPreserved);
aIcon5 = CGulIcon::NewL(aBmp5, aBmpMask5);
CleanupStack::Pop (2); // aBmp5 aBmpMask5
CleanupStack::PushL(aIcon5);
aTabiconArray->AppendL(aIcon5);
CleanupStack::Pop(aIcon5);

iCTabControls->SetIconArray(aTabiconArray,40);
CleanupStack::Pop( aTabiconArray );
iCTabControls->SetTitleAndTabBackgroundSize(30,50);//设定标题大小,tab背景宽度
然后在 ComponentControl 加上类似代码
switch ( aIndex )
{
case ETABControl:
return iCTabControls;
}
return NULL;
OfferKeyEventL里面处理相应的案件响应
//TAB按键控制
if (iCTabControls)
{
if (EEventKeyDown == aType)
{
iCTabControls->OfferKeyEventL(aKeyEvent,aType);
}
}
就这点了,大家有好的建议还清留言啊。

posted @ 2010-12-02 11:39  冰岛  阅读(419)  评论(0编辑  收藏  举报