• 自定义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);
    }
    }
    就这点了,大家有好的建议还清留言啊。

  • 相关阅读:
    SQLite剖析之异步IO模式、共享缓存模式和解锁通知
    SQLite剖析之动态内存分配
    SQLite剖析之锁和并发控制
    SQLite剖析之临时文件、内存数据库
    SQLite剖析之数据类型
    关于Docker目录挂载的总结(一)
    docker常用命令
    玩转docker(一)
    go hello
    术语“go”不被识别为cmdlet,函数,脚本文件或可操作程序的名称
  • 原文地址:https://www.cnblogs.com/yaoliang11/p/1894271.html
Copyright © 2020-2023  润新知