问:
小弟在研究ListBox的范例代码时遇到以下状况:
_LIT(KListItemFormat, "/t%S/t/t");
代码:
TBuf<32> item;
item.Format(KListItemFormat, _L("Ha ha"));
结果:
程序出错
代码:
TBuf<32> item;
item.Format(KListItemFormat, _L("Haha"));
结果:
我在ListBox里显示两个方块
代码:
TBuf<32> item;
item = _L("/tHaha/t/t");
结果:
在ListBox里显示正常
代码:
TBuf<32> item;
item.Format(KListItemFormat, _L("哈哈"));
结果:
程序出错
代码:
TBuf<32> item;
item = _L("/t哈哈/t/t");
结果:
在ListBox里显示正常
由于初次接触Symbian开发,
搞不明白为什么,
哪位大哥能够指点一下:) 、
答:
%S表示对应参数是Descriptor 的指针。
而_L宏只是返回一个Descriptor
最好使用一个TBuf或者用_LIT宏,然后取它的地址。
代码:
_LIT(KListItemFormat, "/t%S/t/t");
TBuf<32> item;
_LIT(KHaha,"Ha ha");
item.Format(KListItemFormat, &KHaha);