图标制作 参照http://hi.baidu.com/plpcha/blog/item/2f1beb18a2b09b0535fa41b8.html
在symbian 5th 中,动态 创建listbox 的 图标首先在 mmp文件中 添加图片资源
START BITMAP **.mbm
HEADER
TARGETPATH /resource/apps
SOURCEPATH ../gfx
SOURCE c12,1 list_icon.bmp list_icon_mask.bmp
SOURCE c12 contact.bmp contact_mask.bmp inbox.bmp inbox_mask.bmp keymsg.bmp keymsg_mask.bmp newmsg.bmp newmsg_mask.bmp outbox.bmp outbox_mask.bmp sent.bmp sent_mask.bmp textmsg.bmp textmsg_mask.bmp
END
然后在想使用图片的地方
SetupListBoxIconsL()
{
CArrayPtr< CGulIcon >* icons = NULL;
icons = new (ELeave) CAknIconArray( 2 );//图标数量
CleanupStack::PushL( icons );
CGulIcon* icontext;
// for EListBoxEncrptomessagingList_iconIndex
icontext = LoadAndScaleIconL(
KEncrptoMessagingFile, EMbmEncrptomessagingTextmsg, EMbmEncrptomessagingTextmsg_mask,
NULL, EAspectRatioPreserved );
CGulIcon* iconkey;
// for EListBoxEncrptomessagingList_iconIndex
iconkey = LoadAndScaleIconL(
KEncrptoMessagingFile, EMbmEncrptomessagingKeymsg, EMbmEncrptomessagingKeymsg_mask,
NULL, EAspectRatioPreserved );
CleanupStack::PushL( icontext );
icons->AppendL( icontext );
CleanupStack::Pop( icontext );
CleanupStack::PushL( iconkey );
icons->AppendL( iconkey );
CleanupStack::Pop( iconkey );
CleanupStack::Pop( icons );
if ( icons != NULL )
{
iListBox->ItemDrawer()->ColumnData()->SetIconArray( icons );
}
}
动态 添加
void LoadMessageItem()
{
_LIT( KItemStartText, "0/t" );
_LIT( KItemStartKey, "1/t" );
// New item text
for(TInt i = 0;i<count; i++)
{
DEBUG_ASSERT(inbox.GetMessage(i));
TTime time = inbox.GetMessage(i)->GetTime();
const CRecipientsList& iRecipientsList = inbox.GetMessage(i)->GetRecipientsList();
TBuf<50> itemText;
if(**)
{
itemText.Insert( 0, KItemStartKey() );
}
else
{
itemText.Insert( 0, KItemStartText() );
}
itemText.Append(timeText);
itemText.Append(iRecipientsList.GetRecipients(0)->GetFirstName());
itemText.Append(iRecipientsList.GetRecipients(0)->GetGivenName());
// Item array. By default iListBox owns the item array, so no
// deletion is needed.
CDesCArray* temArray =
static_cast<CDesC16ArrayFlat*>(iListBox->Model()->ItemTextArray());
temArray->InsertL( i, itemText );
}
iListBox->HandleItemAdditionL();
}