用户提示消息的问题。

zg351229063 2007-09-12 11:24:58
我在*.loc中定义了下面的东西:
#define qtn_mmm_mmm "123456789"

试图执行下面的操作:
CEikonEnv::Static()->InfoMsg( qtn_mmm_mmm );

但由于参数类型不匹配,所以,无法通过编译。

我现在的目标就是将消息定义在*.loc中(如上所示),然后弹出消息框,可以用InfoMsg,也可不用。

请问,该如何实现?

还有一个问题是,下面的两条语句有什么不同?为什么一个可以通过编译而另一个却不行?
CEikonEnv::Static()->InfoMsg( _L("123456789") );
CEikonEnv::Static()->InfoMsg( _L(qtn_mmm_mmm) );

...全文
167 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
zg351229063 2007-09-14
  • 打赏
  • 举报
回复
没招儿了。
zg351229063 2007-09-13
  • 打赏
  • 举报
回复
哦,那您要说明的是什么啊?嘿嘿。
toann 2007-09-13
  • 打赏
  • 举报
回复
你没明白我要说明的问题。
zg351229063 2007-09-13
  • 打赏
  • 举报
回复
我刚才说的并不是参数调用的问题,我的意思只是说下面的两种形式应该是等价的。
CEikonEnv::Static()- >InfoMsg( qtn_mmm_mmm ); 相当于CEikonEnv::Static()- >InfoMsg( "123456789" );

如果我定义了宏#define qtn_mmm_mmm "123456789" :
我写成下面的两种形式有什么不同吗?
难道宏不是简单的替换吗?
CEikonEnv::Static()- >InfoMsg( _L("123456789") );
CEikonEnv::Static()- >InfoMsg( _L(qtn_mmm_mmm) );
toann 2007-09-13
  • 打赏
  • 举报
回复
#define qtn_mmm_mmm "123456789"
这样是define了一个c的字符串

#define qtn_mmm_mmm _L"123456789"
这样是define了一个symbian的描述符

你调用的函数,参数是接受一个描述符,不是接受一个c的字符串。
zg351229063 2007-09-13
  • 打赏
  • 举报
回复
没明白。

我下面的理解有问题吗?
在编译的时候,如果在代码中遇到qtn_mmm_mmm就用"123456789" 替换。
也就是说CEikonEnv::Static()->InfoMsg( qtn_mmm_mmm ); 相当于CEikonEnv::Static()->InfoMsg( "123456789" );

我觉得是理解错了,因为编译器告诉我我错了。

但是,宏不就是这么个意思吗?
toann 2007-09-13
  • 打赏
  • 举报
回复
#define qtn_mmm_mmm "123456789"
这样是define了一个char*,而InfoMsg参数需要一个描述符,所以类型不匹配;
你也可以这样:_LIT(qtn_mmm_mmm, "123456789");
CEikonEnv::Static()- >InfoMsg( qtn_mmm_mmm );
toann 2007-09-13
  • 打赏
  • 举报
回复
自己根据错误信息找原因吧......
zg351229063 2007-09-13
  • 打赏
  • 举报
回复
我只是想知道用#define为什么不可以。
toann 2007-09-13
  • 打赏
  • 举报
回复
那你非用define干什么?
_LIT(xxxxx,"abcdefg");不就行了么?
zg351229063 2007-09-13
  • 打赏
  • 举报
回复
你之前的回复我没有忘,但还是要用_L,我们这里规定不能用_L只能用_LIT啊。
toann 2007-09-13
  • 打赏
  • 举报
回复
我之前的回复白写了......
伤心离去......
zg351229063 2007-09-13
  • 打赏
  • 举报
回复
是啊,那具体怎么写呢?
jeffchen 2007-09-13
  • 打赏
  • 举报
回复
InfoMsg不接受c风格的字符串,必须使用TDesC描述符。
toann 2007-09-13
  • 打赏
  • 举报
回复
才疏学浅啊,回答不了你的问题。
toann 2007-09-12
  • 打赏
  • 举报
回复
#define qtn_mmm_mmm "123456789"
改为
#define qtn_mmm_mmm _L"123456789"
zg351229063 2007-09-12
  • 打赏
  • 举报
回复
改成这样确实可以通过编译了,但是,这是为什么啊?
还有,Nokia的Code Convention规定,不应该使用_L而应改为_LIT,如果是这样的话,CEikonEnv::Static()- >InfoMsg( qtn_mmm_mmm );
就不可以直接这样写了,我该如何修改?

3,120

社区成员

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

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