глюки Intel C++ Compiler 8 и CListCtrl
От: Stepanov Россия  
Дата: 24.08.04 04:59
Оценка:
При использовании Intel C++ Compiler 8 в колонках CListCtrl пропадают русские буквы. Вместо них просто черные квадраты... (( При использовании внутреннего компилера студии все работает нормально. Как быть? Кто знает как это лечится?
О себе: Visual Studio 2003, программа использует MFC и UNICODE.
Re: глюки Intel C++ Compiler 8 и CListCtrl
От: SchweinDeBurg Россия https://zarezky.spb.ru/
Дата: 24.08.04 05:19
Оценка:
Здравствуйте, Stepanov, Вы писали:

S>При использовании Intel C++ Compiler 8 в колонках CListCtrl пропадают русские буквы. Вместо них просто черные квадраты... (( При использовании внутреннего компилера студии все работает нормально. Как быть? Кто знает как это лечится?

S>О себе: Visual Studio 2003, программа использует MFC и UNICODE.

Если строки зашиты в код, а не в ресурсы, попробуйте #pragma setlocale().
- Искренне ваш, Поросенок Пафнутий
Re[2]: глюки Intel C++ Compiler 8 и CListCtrl
От: Stepanov Россия  
Дата: 24.08.04 07:07
Оценка:
Здравствуйте, SchweinDeBurg, Вы писали:

SDB> попробуйте #pragma setlocale().


Не помогает... И в свойствах диалога русский стоит, и #pragma setlocale("rus") в StdAfx.h прописал... Причем проблема только при использовании Юникода.
Re[3]: глюки Intel C++ Compiler 8 и CListCtrl
От: SchweinDeBurg Россия https://zarezky.spb.ru/
Дата: 24.08.04 07:13
Оценка:
Здравствуйте, Stepanov, Вы писали:

S>Здравствуйте, SchweinDeBurg, Вы писали:


SDB>> попробуйте #pragma setlocale().


S>Не помогает... И в свойствах диалога русский стоит, и #pragma setlocale("rus") в StdAfx.h прописал... Причем проблема только при использовании Юникода.


А если так:

#pragma setlocale("Russian_Russia.1251")


Причем в том .cpp, в котором есть строчки на русском.
- Искренне ваш, Поросенок Пафнутий
Re[4]: Еще догадочка...
От: SchweinDeBurg Россия https://zarezky.spb.ru/
Дата: 24.08.04 07:20
Оценка:
А что вернет вызов ::IsWindowUnicode() для "проблемного" контрола?
- Искренне ваш, Поросенок Пафнутий
Re[4]: глюки Intel C++ Compiler 8 и CListCtrl
От: Stepanov Россия  
Дата: 24.08.04 07:22
Оценка:
SDB>#pragma setlocale("Russian_Russia.1251")
SDB>Причем в том .cpp, в котором есть строчки на русском.

Аналогично... Причем пробовал и в тот .cpp где строчки на русском, и в StdAfx.h Результат один — его отсутствие.
Re[5]: Еще догадочка...
От: Stepanov Россия  
Дата: 24.08.04 07:26
Оценка:
::IsWindowUnicode() возвращает 1. TRUE....
Re[5]: глюки Intel C++ Compiler 8 и CListCtrl
От: SchweinDeBurg Россия https://zarezky.spb.ru/
Дата: 24.08.04 07:32
Оценка:
Здравствуйте, Stepanov, Вы писали:

SDB>>#pragma setlocale("Russian_Russia.1251")

SDB>>Причем в том .cpp, в котором есть строчки на русском.

S>Аналогично... Причем пробовал и в тот .cpp где строчки на русском, и в StdAfx.h Результат один — его отсутствие.


Хорошо, давайте еще один эксперимент — пихнуть в контрол русскую строчку из ресурсов.
- Искренне ваш, Поросенок Пафнутий
Re[6]: Еще догадочка...
От: Stepanov Россия  
Дата: 24.08.04 07:33
Оценка:
Прямо мысли закрадываются, что разрекламированный компилер плохо дружит с Юникодом... Однако, в силу широкого применения Юникода, эти мысли надо отмести.
Re[7]: Еще догадочка...
От: SchweinDeBurg Россия https://zarezky.spb.ru/
Дата: 24.08.04 07:35
Оценка:
Здравствуйте, Stepanov, Вы писали:

S>Прямо мысли закрадываются, что разрекламированный компилер плохо дружит с Юникодом... Однако, в силу широкого применения Юникода, эти мысли надо отмести.


М-м-м... а Вы пробовали ФАРом на внутренности экзешника смотреть? Корректные юникодные русские строки имеют довольно узнаваемый вид...
- Искренне ваш, Поросенок Пафнутий
Re[6]: глюки Intel C++ Compiler 8 и CListCtrl
От: Stepanov Россия  
Дата: 24.08.04 07:40
Оценка:
SDB>Хорошо, давайте еще один эксперимент — пихнуть в контрол русскую строчку из ресурсов.

Этот вариант РАБОТАЕТ!
Создал строковый ресурс, в программе создал переменную типа CString, грузанул строку LoadString(). Все пучком.
Re[7]: глюки Intel C++ Compiler 8 и CListCtrl
От: SchweinDeBurg Россия https://zarezky.spb.ru/
Дата: 24.08.04 07:44
Оценка: 2 (1)
Здравствуйте, Stepanov, Вы писали:

SDB>>Хорошо, давайте еще один эксперимент — пихнуть в контрол русскую строчку из ресурсов.


S>Этот вариант РАБОТАЕТ!

S>Создал строковый ресурс, в программе создал переменную типа CString, грузанул строку LoadString(). Все пучком.

Вообще-то говоря, лучше так и делать. Зашивать в код строки — это как-то не по виндовому. Но вывод однозначный — некорректное их преобразование. Кстати, а ICL вообще поддерживает #pragma setlocale()? Там у них в доке есть список прагм, которые они игнорируют.
- Искренне ваш, Поросенок Пафнутий
Re[8]: глюки Intel C++ Compiler 8 и CListCtrl
От: Stepanov Россия  
Дата: 24.08.04 09:21
Оценка:
SDB>Кстати, а вообще поддерживает #pragma setlocale()? Там у них в доке есть список прагм, которые они игнорируют.

Как оказалось не поддерживает.

The following pragmas, which sometimes appear in header files, are accepted without error but have no effect: 
component 
function 
include_alias 
inline_depth 
inline_recursion 
intrinsic 
setlocale


Да, к вопросу о внутренностях exe-шника... Обследование показало, что все строки программы в Unicode, только... в разных вариантах кодировки! Те строки, которые хранятся в ресурсах, хранятся в "нормальном" Unicode, а те, которые в тексте программы в какой-то неправильном. В каком, я так и не понял. По крайней мере, это не Unicode, не Unicode Big Endian и не UTF-8. Однако, по структуре очень похожее на Юникод.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.