修正wxFormBuilder不输出ANSI格式 Topic is solved

这是wxWidgets论坛的中文版本。在这里,您可以用您的母语汉语讨论上面任一子论坛所涉及的所有关于wxWidgets的话题。欢迎大家参与到对有价值的帖子的中英互译工作中来!
Post Reply
Loaden
I live to help wx-kind
I live to help wx-kind
Posts: 177
Joined: Tue Feb 19, 2008 10:21 am
Location: China

修正wxFormBuilder不输出ANSI格式

Post by Loaden » Tue Jan 20, 2009 11:13 pm

wxfb不管是正式版,还是3.1测试版,当界面中存在汉字时,将只能输出UTF-8格式:而我的代码格式都是ANSI。
到wxfb论坛上反馈,发现已经存在一个补丁。
于是svn checkout代码,再应用补丁,发现抛出异常。于是修改转换代码,发现转换成功,却不能正常工作。只好简单的跟踪下,用了一个不太好的办法,但总算解决问题。
有兴趣的朋友可以下载我编译好的版本:http://www.qpsoft.com/downloads/wxfb.7z
Life is not fair, get used to it.

Loaden
I live to help wx-kind
I live to help wx-kind
Posts: 177
Joined: Tue Feb 19, 2008 10:21 am
Location: China

Post by Loaden » Wed Jan 21, 2009 12:53 am

在2009-01-21 08:50:55之前下载的朋友请重新下载:有点小问题,转换不全,已修正,代码如下:

Code: Select all

std::string TypeConv::_WxStringToAnsiString(const wxString &str)
{
//    std::string newstr( str.mb_str(wxConvISO8859_1) );
    setlocale(LC_ALL, "");
    size_t len = wcstombs(NULL, str.c_str(), 0);
    std::vector<char> buf(len + 1);
    wcstombs(&buf[0], str.c_str(), len);
    return std::string(&buf[0]);
}
另,为什么

Code: Select all

std::string newstr( str.mb_str(wxConvISO8859_1) );
会抛出异常呢?是因为转换后容量变大了,所以内存越界?
Life is not fair, get used to it.

Loaden
I live to help wx-kind
I live to help wx-kind
Posts: 177
Joined: Tue Feb 19, 2008 10:21 am
Location: China

Post by Loaden » Wed Feb 11, 2009 1:03 pm

论坛发布3.1.59版本了。上述问题已经修正,结帖。
Life is not fair, get used to it.

Post Reply