Page 1 of 1

wxFormBuilder и буква "я"

Posted: Wed Mar 04, 2009 11:01 am
by Dalexand
Создаю на форме wxRadioBox, в choices задаю значение, начинающееся со строчной "я" ("является" "не является").
После компиляции вместо радиобаттона со строкой "является" - радиобаттон с пустой строкой. Попробовал генерпцию файла в ANSI/UTF, результат один. Если строка начинается с заглавной "Я", или строчное "я" стоит в любом месте кроме первой буквы, то все нормально.

Это не проблема wxFormBuilder, а скорее wxWidgets, т.к. генерируется следующий код:

Code: Select all

wxString nameFilterType_Choices[] = { wxT("является"), wxT("не является") };
int nameFilterType_NChoices = sizeof( nameFilterType_Choices ) / sizeof( wxString );
nameFilterType_ = new wxRadioBox( this, wxID_ANY, wxT("Имя"), wxDefaultPosition, wxDefaultSize, nameFilterType_NChoices, nameFilterType_Choices, 2, wxRA_SPECIFY_COLS );
который неправильно обрабатывается виджетами.

Есть ли решение?

Posted: Thu Mar 05, 2009 5:11 am
by borr_1
У меня все в порядке с wxRadioBox Unicode и "является". Но я использую CodeBlock с wxSmith
wxString __wxRadioBoxChoices_1[1] =
{
_("является")
};
RadioBox1 = new wxRadioBox(this, ID_RADIOBOX1, _("Label"), wxDefaultPosition, wxDefaultSize, 1, __wxRadioBoxChoices_1, 1, 0, wxDefaultValidator, _T("ID_RADIOBOX1"));
Кодировка файла UTF-8 #define wxUSE_UNICODE, __GNUWIN32__, __WXMSW__, WXUSINGDLL

Posted: Thu Mar 05, 2009 9:49 am
by Dalexand
Тогда похоже, что ошибка только в ANSI. Попробовал Unicode-сборку виджетов, все нормально.

Если кто-нибудь еще использует неюникодную сборку виджетов, проверьте, пожалуйста, код.

Posted: Fri Mar 06, 2009 1:58 pm
by borr_1
Теги wxT убрать вообще для ANSI пробовали или поменять их на виндовое _()

Posted: Fri Mar 06, 2009 4:00 pm
by Kolya
borr_1 wrote:Теги wxT убрать вообще для ANSI пробовали или поменять их на виндовое _()
Это никоим образом не влияет на функционирование ANSI сборок
Dalexand wrote:Это не проблема wxFormBuilder, а скорее wxWidgets, т.к. генерируется следующий код:
Эта проблема в операционной системе, а не в wxWidgets и она была обойдена еще пол года назад. Она связана с тем что 'я' это 0xFF и у винды от этого крышу сносит. Для юникода символ 0xFFFF несуществующий и проблема там не проявляется.