Symbian ListBox控件
2010-10-20 08:00:44 来源:WEB开发网终于对Series 60的ListBox控件有了一个比较清晰的了解.
说真的这几天看这样的代码真有点赶鸭子上架.
我在放ListBox控件的容器类中声明了一个CEikColumnListBox* _listbox;
在其ConstructL函数中构造一个CEikColumnListBox的实例:
_listBox = new(ELeave) CAknSingleStyleListBox;
_listBox->ConstructL(this);
_listBox->SetContainerWindowL(*this);
_listBox->CreateScrollBarFrameL(ETrue);
_listBox->ScrollBarFrame()->SetScrollBarVisibilityL(CEikScrollBarFrame::EOn,CEikScrollBarFrame::EAuto);
因为需要处理listbox的Keypress事件.
_listBox->SetListBoxObserver(this);
所以这里的容器类的实例必须扩展public MEikListBoxObserver.
头文件必须包含eiklbo.h.
当然需要实现MEikListBoxObserver中的虚函数:
void CTestListContainer::HandleListBoxEventL(CEikListBox* aListBox,TListBoxEvent aEventType)
这里处理KeyPress事件.
需要aEventType==EEventEnterKeyPressed.
如果需要知道选中的是某一个Item.
TInt number(_listBox->CurrentItemIndex());
number是从0开始的一直到ListBox的Item总数减一的整数.
上下移动选择的处理是在函数
TKeyResponse CTestListContainer::OfferKeyEventL(const TKeyEvent& aKeyEvent,TEventCode aType){
if (aType!=EEventKey)
{return EKeyWasNotConsumed;}
f (_listBox){
return _listBox->OfferKeyEven
赞助商链接