2015-03-03 5 views
2

Я тестировал приложение, используя listView, который хорошо работает с западноевропейскими символами. Однако, если локаль находится на турецком языке, символы отображаются неправильно в списке.ListView, отображающий неправильный текст VB6.0

Например, символ 'Ş' будет отображаться как 'Þ'.

я могу видеть, что оба персонажа представлены в виде десятичной дроби: 254.

Как я могу заставить мой ListView использовать локальную кодовую вместо Юникода?

Спасибо за любой совет.

ответ

1

Он не использует юникод, если он находится в пакете формы VB.

VB6 - приложение ANSI (у Win95 не был API Unicode). Unicode внутри и при использовании COM. Но создание окна, в котором находится список, использует ANSI.

Поэтому вам необходимо установить кодовую страницу не-Юникода в региональных настройках.

Также у помощи есть целая глава об этом.

+0

http://support.microsoft.com/kb/193540 – Rob

0

получается, вы можете установить кодировку в ListView, описанному ниже:

listView.Font.Charset = 1 ' Default charset obtains current codepage 

Это разрешило мой вопрос, хотя формат языка должен быть таким же, как Locale.

0

Одна из вещей, предлагаемая MSHFlexGrid - поддержка Unicode. В VB6 вообще нет проблемы с Unicode, это проблема выбора правильных элементов управления.

Если бы существовала эволюция за пределами VB6, мы бы увидели больше элементов управления, перемещенных в Юникод, когда Win9x умер. К сожалению, это было прервано.

Если вам нужен Unicode ListView, то - это вещи, которые вы могли бы сделать. Существуют сторонние элементы управления или даже подходы, которые могут зарываться под оболочкой управления ListView в OCX с использованием подкласса Unicode.