列表框CAknSingleStyleListBox 用法

来源:互联网 发布:c语言面试经常问的问题 编辑:程序博客网 时间:2024/06/06 00:46
CAknSingleStyleListBox

1.在头文件中定义
    CAknSingleStyleListBox * iListBox;
    CDesCArrayFlat* iListBoxArray;

2.在cpp文件中ConstructL()中
    //创建列表
    iListBox = new (ELeave) CAknSingleStyleListBox;
    iListBox->SetContainerWindowL(*this);
    //iListbox->SetMopParent(this);
    iListBox->ConstructL(this, /*EAknListBoxSelectionList*/
    EAknListBoxSelectionList | EAknListBoxLoopScrolling);
    iListBox->SetExtent(TPoint(0, 0), TSize(aRect.Size().iWidth,
            aRect.Size().iHeight));

    //数据操作
    iListBoxArray = new (ELeave) CDesCArrayFlat(10);
    CTextListBoxModel* model = iListBox->Model();
    model->SetItemTextArray(iListBoxArray);
    model->SetOwnershipType(ELbmOwnsItemArray);
    //添加滚动条
    iListBox->CreateScrollBarFrameL(ETrue);
    iListBox->ScrollBarFrame()->SetScrollBarVisibilityL(
            CEikScrollBarFrame::EOn, CEikScrollBarFrame::EAuto);

    for (TInt i = 0; i < 10; i++)
        {
        TBuf<32> sTmpBuf;
        sTmpBuf.Append(_L("/t wangshenghu"));
        iListBoxArray->AppendL(sTmpBuf);
        }



3.在析构函数中
delete iListBox;


4.在CountComponentControls()函数中
return 1;

5.在ComponentControl()函数中
    switch (aIndex)
        {
        case 0:
            {
            return iListBox;
            }
        default:
            return NULL;
        }

6.在OfferKeyEventL()函数中
    TKeyResponse ret(EKeyWasNotConsumed);
    if (iListBox)
        {
        ret = iListBox->OfferKeyEventL(aKeyEvent, aType);
        return ret;
        }
    return ret;