Конвертация строк

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
VladPro
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 15.10.2005 (Сб) 23:52

Конвертация строк

Сообщение VladPro » 24.02.2006 (Пт) 23:27

Привет всем.

Сделал я себе список задач, task list. Состоит он из отфильтрованных заголовков окон. И возникли две проблемы:

Горизонтальный скрол-бар в лист-боксе. Сделал строго по MSDN, через SendMessageByNum. С обычным текстом всё ок, а вот с юникодом проблемы - TextWidth не определяет ширину текста, и Len тоже (хотел сделать ход конём - TextWidth(Space(Len ("заголовок"))). Нифига. По идее, надо бы перевести в обычную кодировку, но с Юникодом такие сложности - нет ли у кого готового кода?

И вторая проблема - русские заголовки под японской локалью выводятся всякой ерундой. А поиск ведь идёт под заголовку. Если скомпилировать программу под японской локалью, то она заголовки найдёт, но будут проблемы уже под русской. Как бы сконвертировать строку? У меня есть пара конвертирующих функций, но типа Win to Dos, подозреваю, что с японской кодировкой всё намного сложнее.

Владислав.

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 24.02.2006 (Пт) 23:33

Задавать Font.Charset не помогает?
И кроме того, если заменить ListBox на ListView, проблема не исчезает?
Lasciate ogni speranza, voi ch'entrate.

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 24.02.2006 (Пт) 23:36

1. Можно попробовать апи lstrlenW
А я все практикую лечение травами...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 24.02.2006 (Пт) 23:37

Twister писал(а):1. Можно попробовать апи lstrlenW

Зачем? Разве он про Len/LenB спрашивал?
Lasciate ogni speranza, voi ch'entrate.

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 24.02.2006 (Пт) 23:39

не определяет ширину текста, и Len тоже
А я все практикую лечение травами...

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 24.02.2006 (Пт) 23:40

Внимательнее посмотри, как он использует Len.
Lasciate ogni speranza, voi ch'entrate.

Twister
Теоретик
Теоретик
Аватара пользователя
 
Сообщения: 2251
Зарегистрирован: 28.06.2005 (Вт) 12:32
Откуда: Алматы

Сообщение Twister » 24.02.2006 (Пт) 23:43

:lol: Ночь сказывается, сорри...
А я все практикую лечение травами...

VladPro
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 15.10.2005 (Сб) 23:52

Сообщение VladPro » 26.02.2006 (Вс) 0:29

Привет всем, спасибо за советы.

Так, с горизонтальным скрол-баром разобрался. TextWidth берёт ширину текста у формы. Поставил форме тот же шрифт и размер, что и у лист-бокса, и всё заработало.

Теперь бы ещё с русскими заголовками окон под японской локалью разобраться.

Владислав

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 26.02.2006 (Вс) 0:31

VladPro писал(а):TextWidth берёт ширину текста у формы.

Неверно.
TextWidth - это метод (у формы и PictureBox). Если ты не указываешь объект, то по умолчанию это Me для формы.
Никто тебе не запрещает писать, например, Picture1.TextWidth, при этом ширина текста будет основываться на шрифте, заданном в Picture1.
Lasciate ogni speranza, voi ch'entrate.

VladPro
Новичок
Новичок
 
Сообщения: 43
Зарегистрирован: 15.10.2005 (Сб) 23:52

Сообщение VladPro » 27.02.2006 (Пн) 22:45

Вот гадство! TextWidth, оказывается, правильно считается только под русской локалью. А под японской - криво. Пока поставил размер шрифта форме на 2 пункта больше, чем листу. Это как-то лечится?

Владислав.


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: Google-бот и гости: 74

    TopList