我想动态的加listbox的item,现在是添加可以,但退出程序就出错了,为何

zorro0799 2006-04-26 09:47:05
const TInt KNumberOfIcons_1(1);

TBool CDynamicListContainer::AddOneItem(TText* szText, int inIconName, int aBitmapId, int aMaskId)
{
if (iSavedGamesListBox != NULL)
{
CTextListBoxModel* model = iSavedGamesListBox->Model(); // not taking ownership
CDesCArray* savedGamesArray = STATIC_CAST(CDesCArray*, model->ItemTextArray());

TBuf<256> ibuf;
ibuf = (const TText* )szText;
savedGamesArray->AppendL(ibuf);

//icon
HBufC* iconFileName;
iconFileName = StringLoader::LoadLC(inIconName); // Pushes iconFileName onto the Cleanup Stack.
// Create an array of icons, reading them from the file
CArrayPtr<CGulIcon>* icons = new(ELeave) CAknIconArray(KNumberOfIcons_1);
CleanupStack::PushL(icons);
icons->AppendL(iEikonEnv->CreateIconL(*iconFileName, aBitmapId, aMaskId));
// icons->AppendL(iEikonEnv->CreateIconL(*iconFileName, EMbmDynamiclist2player, EMbmDynamiclist2player_mask));
CleanupStack::Pop(icons);
CleanupStack::PopAndDestroy(iconFileName);

iSavedGamesListBox->ItemDrawer()->ColumnData()->SetIconArray(icons); // passing ownership of icons
iSavedGamesListBox->HandleItemAdditionL();
return TRUE;
}
return FALSE;

}
...全文
172 5 打赏 收藏 转发到动态 举报
写回复
用AI写文章
5 条回复
切换为时间正序
请发表友善的回复…
发表回复
chenziteng 2006-04-26
  • 打赏
  • 举报
回复
我想你的理解有偏差。

  CAknIconArray是动态数组,构造时的的参数是指这个数组的粒度,即初始元素个数以及以后每次动态增长的元素个数。

  格式串时'\t'前的数字指图标在CAknIconArray数组中的下标。如果图标的个数是固定的,则你可以在构造时把它们都加载到CAknIconArray对象中,添加格式串时只要指定不同的数字就能显示不同的图标。
zorro0799 2006-04-26
  • 打赏
  • 举报
回复
AddOneItem((TUint16*)L"0\t12345678", R_ICON_FILE_NAME,
EMbmDynamiclist1player, EMbmDynamiclist1player_mask);
AddOneItem((TUint16*)L"0\tabcdefg", R_ICON_FILE_NAME,
EMbmDynamiclist2player, EMbmDynamiclist2player_mask);
呵呵,谢谢,我其实是想不同的item不同的图标,我就把所有的图标放到一个mbm中,每次加时只是后面的两个参数不同,我以为这样就可,可发现不行,而且我不太理解以下两句话
CArrayPtr<CGulIcon>* icons = new(ELeave) CAknIconArray(KNumberOfIcons_1);//例子里
KNumberofIcons = 2;,我这里改成1了,
iSavedGamesListBox->ItemDrawer()->ColumnData()->SetIconArray(icons); //这里的icon数组是什么意思,一个item不是只有一个icon吗,如果上面的knumberoficon = 10;对应10个item?
chenziteng 2006-04-26
  • 打赏
  • 举报
回复
既然在这儿回了,这个问题我就不回mail了。
chenziteng 2006-04-26
  • 打赏
  • 举报
回复
为什么那么着急呢?我正调着呢就看见有贴子发出来了。你说我该回mail还是回贴子:)

如果中间不用换图标,把下面这段注掉就可以了:
/*
//icon
HBufC* iconFileName;
iconFileName = StringLoader::LoadLC(inIconName); // Pushes iconFileName onto the Cleanup Stack.
// Create an array of icons, reading them from the file
CArrayPtr<CGulIcon>* icons = new(ELeave) CAknIconArray(KNumberOfIcons_1);
CleanupStack::PushL(icons);
icons->AppendL(iEikonEnv->CreateIconL(*iconFileName, aBitmapId, aMaskId));
// icons->AppendL(iEikonEnv->CreateIconL(*iconFileName, EMbmDynamiclist2player, EMbmDynamiclist2player_mask));
CleanupStack::Pop(icons);
CleanupStack::PopAndDestroy(iconFileName);
iSavedGamesListBox->ItemDrawer()->ColumnData()->SetIconArray(icons); // passing ownership of icons
*/
zorro0799 2006-04-26
  • 打赏
  • 举报
回复
帮帮忙

3,119

社区成员

发帖
与我相关
我的任务
社区描述
塞班系统(Symbian系统)是塞班公司为手机而设计的操作系统,它的前身是英国宝意昂公司的 EP ( Electronic Piece of cheese)操作系统。
社区管理员
  • Symbian社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧