eXeL@B —› Вопросы новичков —› Ресурсы типа String. |
Посл.ответ | Сообщение |
|
Создано: 07 ноября 2019 21:14 · Личное сообщение · #1 |
|
Создано: 07 ноября 2019 21:32 · Личное сообщение · #2 Code:
Про параметр CodePage ----- 2 оттенка серого |
|
Создано: 07 ноября 2019 21:58 · Личное сообщение · #3 |
|
Создано: 07 ноября 2019 22:08 · Поправил: f13nd · Личное сообщение · #4 zombi-vadim пишет: Я так понимаю если выставить параметр CP_ACP, то функция пытается подобрать аналог символа Юникода к текущей кодовой странице. Для этого W-функции в винде и есть, чтобы не преобразовывать в ANSI, а выводить юникоде. Тебе нужен юникодовый листбокс и юникод ему передавать. ----- 2 оттенка серого |
|
Создано: 07 ноября 2019 22:20 · Личное сообщение · #5 |
|
Создано: 07 ноября 2019 22:24 · Личное сообщение · #6 zombi-vadim пишет: WideCharToMultiByte тут не поможет? Ну если найдешь способ другой чарсет установить окну, то может и поможет. Я такого способа не знаю. LVM_SETUNICODEFORMAT можешь посмотреть, чтоб не жестить сильно над программой. ----- 2 оттенка серого | Сообщение посчитали полезным: zombi-vadim |
|
Создано: 07 ноября 2019 22:25 · Личное сообщение · #7 |
|
Создано: 07 ноября 2019 23:46 · Личное сообщение · #8 |
|
Создано: 08 ноября 2019 19:09 · Поправил: zombi-vadim · Личное сообщение · #9 dezmand07dezmand07 пишет: ничего не мешает использовать в проекте с много байтовой кодировкой юникодные W-функции. Да ничего не мешает. Но насколько я разобрался в ситуации, корень зла в том что все окна в многобайтовом проекте ожидают ANSI строки, и им плевать что получают они юникод строку.Один фиг она будет преобразована в ANSI и выведена на экран в виде крокозяблов. А вот обходной путь требует копания на форумах, как поставить юникод чарсет окну в ручную. У меня пока не получается. |
|
Создано: 08 ноября 2019 19:39 · Личное сообщение · #10 |
|
Создано: 08 ноября 2019 19:44 · Личное сообщение · #11 zombi-vadim Винда понятия не имеет ни о каких ansi-проектах. Все стандартные контролы реализованы чисто юникодовыми, A-функции просто конвертируют переданную мультибайтную строку в юникод и вызывают парную W-функцию. Всякие CCM_SETUNICODEFORMAT нужны только тем контролам, у которых нет раздельных A- и W-сообщений, чтобы они понимали, указатель на что ты им передаешь. Добавлено спустя 4 минуты DenCoder пишет: 2) В файлах проекта перед символами " и ' поставить символ L Лучше использовать макрос TEXT(). Это сконпелируется в строку, соответствующую выбранной кодировке. DenCoder пишет: 3) Все типы char заменить на wchar_t Лучше на TCHAR, по той же причине. И не забывать при том / sizeof(TCHAR), когда в компайлтайме длину буфера вычисляешь. |
|
Создано: 08 ноября 2019 20:45 · Поправил: zombi-vadim · Личное сообщение · #12 DenCoder пишет: В свойствах проекта поменять General -> Character Set: Use Unicode Character Set zombi-vadim пишет: Я как то не горел желанием преобразовывать проект к юникоду CString в юникодовом проекте выдает мне правильные символы в лист бокс, но в многобайтовом - ерунду. У меня много самописных функций для поиска и форматирования строки, даже трудно себе представить сколько времени займет их модификация. И все ради вывода строчек из ресурса в юникоде. Добавлено спустя 12 минут Code:
Вот простейший пример, что тут можно сделать.Контрол не хочет видеть юникод строку.Можно только преобразовать проект к юникоду. иначе мусор на экране. |
|
Создано: 08 ноября 2019 22:14 · Личное сообщение · #13 |
|
Создано: 08 ноября 2019 22:36 · Личное сообщение · #14 |
|
Создано: 09 ноября 2019 06:00 · Поправил: f13nd · Личное сообщение · #15 zombi-vadim пишет: А вот обходной путь требует копания на форумах, как поставить юникод чарсет окну в ручную. Цэшнику наверное все равно будет понятна идея: Code:
На всякий случай исходник ----- 2 оттенка серого |
|
Создано: 09 ноября 2019 14:41 · Поправил: RamMerlabs · Личное сообщение · #16 |
|
Создано: 11 ноября 2019 21:15 · Личное сообщение · #17 |
eXeL@B —› Вопросы новичков —› Ресурсы типа String. |
Эта тема закрыта. Ответы больше не принимаются. |