Page 1 of 1

修正wxFormBuilder不输出ANSI格式

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

Posted: Wed Jan 21, 2009 12:53 am
by Loaden
在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) );
会抛出异常呢?是因为转换后容量变大了,所以内存越界?

Posted: Wed Feb 11, 2009 1:03 pm
by Loaden
论坛发布3.1.59版本了。上述问题已经修正,结帖。