让_() 宏、wxGetTranslation支持多行 不指定 2008/08/02

| |
在用wxWidgets编写一个支持多国语言的Unicode程序时,发现一个问题:如果这么写代码:
wxTextCtrl* info = new wxTextCtrl(this, wxID_ANY,_("本软件目前支持Windows、Linux平台,"
  "Windows平台主程序:pmoney.exe ,Linux平台主程序:pmoney ,请在不同不同执行不同的主程序。"...
的话,_()宏会出现编译错误:
src\about.cpp|21|error C2308: concatenating mismatched wide strings|

经查资料发现:第一行被转换成Unicode格式,即:
L"本软件目前支持Windows、Linux平台,"
,但第二行却变成了ANSI格式
"Windows平台主程序:pmoney.exe ,Linux平台主程序:pmoney ,请在不同不同执行不同的主程序。"

解决方法是给除第一行外的其他行加上_T宏,例如:
wxTextCtrl* info = new wxTextCtrl(this, wxID_ANY,_("本软件目前支持Windows、Linux平台,"
  _T("Windows平台主程序:pmoney.exe ,Linux平台主程序:pmoney ,请在不同不同执行不同的主程序。")...

问题解决,且即可编译成Unicode程序,也可编译成ANSI程序。
发表评论

昵称

网址

电邮

打开HTML 打开UBB 表情 打开表情 隐藏 记住我 [注册]