Ламерский вопрос - MBCS или UNICODE в VC++ 7.0

Все, что вы хотели знать о программизме, но боялись спросить.
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Ламерский вопрос - MBCS или UNICODE в VC++ 7.0

Сообщение vg »

Вопрос «ламерский», но всё же надеюсь, что модераторы меня не накажут, оштрафовав или отправив почитать MSDN.
(читал … да видно сильно я тупой :( ).

Вопрос, собственно, в том, что лучше использовать при программировании в среде VC++ 7.0 приложений, с точки зрения удобства разработки и гибкости в локализации? Из вашего опыта, а не по книжкам?
MS предлагает для этой цели использовать, как UNICODE, так и альтернативу – MBCS. Хотелось бы услышать ответы с акцентом для следующих случаев:
1) разрабатывается проект практически полностью в MFC, например, архитектуры CDoment/CView, или Dialog-based. Практически все строки в ресурсах.
2) То же, но кроме классов контролов MFC, достаточно часто используются не MFC обёртки контролов WinAPI. Строки могут быть как в ресурсах, так и константами непосредственно в коде.
3) Программирование без использования каркасных библиотек. Например, используем только WinAPI.

С MBCS вроде, как всё получается «автоматически», но всёж Майкрософт рекомендует переходить полностью на UNICODE. C UNICODE вроде всё универсально, работает железобетонно, да появляется дополнительная (может и не очень кстати малая) работа по конвертации строк, например, используемых строковых констант MBCS в UNICODE, по выделению достаточной памяти для хранения строк контролов и т.д.

ПС. Не откажите в том, чтоб сразу меня не послать на юникод;))))
Woozy
Завсегдатай
Сообщения: 278
Зарегистрирован: 03 мар 2003, 08:55
Откуда: RU->BC->ON->FI -> Chicago, IL -> Seattle, WA

Сообщение Woozy »

vg, UNICODE - стандарт не от MS (но подсокращённый ими в реализации, как я читал). UNICODE - для всех.

И во всех продуктах MS уже лет 5, не меньше - кругом UNICODE. Это некоторые программеры дома продолжают проверять, всё ли работает с MBCS. :)
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Сообщение vg »

MS уже лет 5, не меньше - кругом UNICODE
И в W95/98/me?
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Сообщение vg »

Я серьёзно, теперь уже шо надо писать L"asdsada" вместо _T"asdsada" :?: :roll:
Woozy
Завсегдатай
Сообщения: 278
Зарегистрирован: 03 мар 2003, 08:55
Откуда: RU->BC->ON->FI -> Chicago, IL -> Seattle, WA

Сообщение Woozy »

vg писал(а):
MS уже лет 5, не меньше - кругом UNICODE
И в W95/98/me?
Операционная система сама по себе, имеет в себе функции поддерживающие однобайтовых не-уникодовских кодировок для совместимости со старым софтом, и "широкие" функции тоже.
Я серьёзно, теперь уже шо надо писать L"asdsada" вместо _T"asdsada"
Я видел исходный текст продукты, разработкой которого руководил прожект-мэнэджер из MS. Все строки декларировались как L"". Определение __T не помешает, по вкусу, по моему, оно "чувствует" "ширину" символа алфавита установленного в проекте.
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Сообщение vg »

Операционная система сама по себе, имеет в себе функции поддерживающие однобайтовых не-уникодовских кодировок для совместимости со старым софтом, и "широкие" функции тоже.
Я не про NT. :lol: W95/98/me имеют MSLU. :?: :shock:
Woozy
Завсегдатай
Сообщения: 278
Зарегистрирован: 03 мар 2003, 08:55
Откуда: RU->BC->ON->FI -> Chicago, IL -> Seattle, WA

Сообщение Woozy »

vg писал(а):
Операционная система сама по себе, имеет в себе функции поддерживающие однобайтовых не-уникодовских кодировок для совместимости со старым софтом, и "широкие" функции тоже.
Я не про NT. :lol: W95/98/me имеют MSLU. :?: :shock:
Каждый может загрузить и установить: http://www.microsoft.com/globaldev/hand ... ounce.mspx
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Сообщение vg »

Определение __T не помешает, по вкусу, по моему, оно "чувствует" "ширину" символа алфавита установленного в проекте.
Чустует #define UNICODE и мапится в L для UNICODE
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Сообщение vg »

Каждый может загрузить и установить: http://www.microsoft.com/globaldev/hand ... ounce.mspx
Железобетонно :lol: , но факт.
Woozy
Завсегдатай
Сообщения: 278
Зарегистрирован: 03 мар 2003, 08:55
Откуда: RU->BC->ON->FI -> Chicago, IL -> Seattle, WA

Сообщение Woozy »

vg писал(а):Железобетонно :lol: , но факт.
А продукты MS и подавно, обеспечат себе UNICODE "изнутри", если нужно.
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Сообщение vg »

Понимаешь, я не могу перекомпилировать просто так те "домашние" проекты в UNICODE. Там большие куски (не GUI) сделаны очень давно (для 98). Кода достаточно много. Можно, конечно, попробовать в тех кусках прибить #define UNICODE -> #undef UNICODE, а затем снова #define UNICODE, но гиморно. И неизвестно вообще - будет ли работать. :(
Woozy
Завсегдатай
Сообщения: 278
Зарегистрирован: 03 мар 2003, 08:55
Откуда: RU->BC->ON->FI -> Chicago, IL -> Seattle, WA

Сообщение Woozy »

vg писал(а):Понимаешь, я не могу перекомпилировать просто так те "домашние" проекты в UNICODE. Там большие куски (не GUI) сделаны очень давно (для 98).
Эх лень... Не хочу лезть проверять себя через MSDN, но строковые классы ATL CComBSTR и _bstr_t должны помочь отцу демократии. Поскольку это не GUI, то при чём тут окна, раз просто строки, отчего-то мне сильно кажется, поддержка системного COM-овского типа BSTR будет вполне адекватна.
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Сообщение vg »

Эх лень... Не хочу лезть проверять себя через MSDN, но строковые классы ATL CComBSTR и _bstr_t должны помочь отцу демократии. Поскольку это не GUI, то при чём тут окна, раз просто строки, отчего-то мне сильно кажется, поддержка системного COM-овского типа BSTR будет вполне адекватна.
Шутить изволите :lol: Легче всё в unicode переписать по объёму работы. :lol:
Woozy
Завсегдатай
Сообщения: 278
Зарегистрирован: 03 мар 2003, 08:55
Откуда: RU->BC->ON->FI -> Chicago, IL -> Seattle, WA

Сообщение Woozy »

vg писал(а):Шутить изволите :lol: Легче всё в unicode переписать по объёму работы.
А что там использовано?

Да, ещё wstring из STL...
vg
Маньяк
Сообщения: 2803
Зарегистрирован: 29 май 2003, 22:29
Откуда: Магадан - Миссиссага

Сообщение vg »

Поскольку это не GUI, то при чём тут окна, раз просто строки
А при том, что часть GUI там тоже имеется. И не корректно работает всего один контрол MFC. Там есть два пути - оставить всё в MFC и MBCS, а долбанный толбар заменить на свой (т.е. WinAPI), что я и сделал пока, но это всё как-то "invalidate" дизайн. Другой путь в том, чтобы всё переписать в UNICODE, но тогда всё надоб переписывать, в том числе и то, что не касается окон. Или попробовать "отсечь" компиляцию кусков кода, как юникод #undef-ом.

Разумеется, раньше надо было думать и писать всё в юникоде. Но в то время делалось всё для 95/98.
Ответить