Список форумов Конференция САПР Bentley MicroStation Конференция САПР Bentley MicroStation
www.ustation.ru
 
 FAQFAQ   ПоискПоиск   ПользователиПользователи   ГруппыГруппы   РегистрацияРегистрация 
 ПрофильПрофиль   Войти и проверить личные сообщенияВойти и проверить личные сообщения   ВходВход 

mdlText_createWide();

 
Начать новую тему   Ответить на тему    Список форумов Конференция САПР Bentley MicroStation -> Профессиональное
Предыдущая тема :: Следующая тема  
Автор Сообщение
vikk



Зарегистрирован: 13.09.2006
Сообщения: 87

СообщениеДобавлено: Пт Июл 25, 2008 12:20 pm    Заголовок сообщения: mdlText_createWide(); Ответить с цитатой

MicroStation 2004
Вот фрагмент кода, меняем заданную строку на "АБВ":

Код:

int Modifi_Text(MSElementUnion *elP)
{
      TextParamWide  textParamWide; 
      TextSizeParam  textSize;
      MSWideChar  wString[256*5];  // текст м.б. представлен как %%240%%241
      char        sText[256*5];     
      . . .
      . . .
     
      memset(&textSize,0,sizeof(TextSizeParam));             
      textSize.mode = TXT_BY_TILE_SIZE;
      mdlText_extractWide(wString,NULL,NULL,NULL,&textSize,&textParamWide,NULL,elP);

      . . .
      . . .

//     wString[0] = 0x0410;
//     wString[1] = 0x0411;   // Вариант 1  'АБВ'
//     wString[2] = 0x0412;
//     wString[3] = 0;         
     wString[0] = 0x00C0;
     wString[1] = 0x00C1;     // Вариант 2  'АБВ'
     wString[2] = 0x00C2;
     wString[3] = 0;         
     mdlText_createWide(elP,elP,wString,NULL,NULL,&textSize,&textParamWide,NULL);
     return 0;
}     


Вариант 1 -- не работает!!! с любыми шрифтами, и TTF и RSC.
Вариант 2 -- работает, даже с TTF шрифтами.
Хотя, казалось бы д.б. наоборот.

Такое впечатление, что данная функция тупо считает, что у нас 1252 кодовая страница, и не смотрит на установки windows.
Возможно ли Ustation-у явно указать какая у нас CP (1251),
коль он не обращает внимания на windows. Переменная есть какая-нибудь?
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Leonid
давно здесь сидим


Зарегистрирован: 28.01.2006
Сообщения: 598
Откуда: С.-Петербург

СообщениеДобавлено: Пт Июл 25, 2008 2:53 pm    Заголовок сообщения: Ответить с цитатой

А по моему так Embarassed

Вариант 1 - юникод
Вариант 2 - CP1251

http://ru.wikipedia.org/wiki/Windows-1251

Насколько я знаю, микрик юникод старается не использовать
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
vikk



Зарегистрирован: 13.09.2006
Сообщения: 87

СообщениеДобавлено: Пн Июл 28, 2008 8:02 am    Заголовок сообщения: Ответить с цитатой

Ustation V8 и выше практически работает только с юникодом.
Названия слоев, моделей, фрагментов - в юникод кодировке.

Функции перевода Unicode ->Multibyte
mdlCnv_convertUnicodeToMultibyte(...);
mdlCnv_convertMultibyteToUnicode(...);
плюс недокументированная функция(и)
mdlCnv_convertUnicodeToMultibyteWithCodePage(...);

Функция mdlText_createWide() на вход, по документации,
требует строку в юникод кодировке, но работает правильно только с латинскими буквами.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение
Leonid
давно здесь сидим


Зарегистрирован: 28.01.2006
Сообщения: 598
Откуда: С.-Петербург

СообщениеДобавлено: Пн Июл 28, 2008 9:02 am    Заголовок сообщения: Ответить с цитатой

vikk писал(а):
Ustation V8 и выше практически работает только с юникодом.
Названия слоев, моделей, фрагментов - в юникод кодировке.


Согласен, но... (если я правильно понял) при использовании функций mdlText_xxx речь идет о создании текстовых элементов...

Вот цитата их хелпа MS 08.05.02.35:
MicroStation vector font resources are typically not encoded in Unicode.
Вернуться к началу
Посмотреть профиль Отправить личное сообщение Отправить e-mail
Показать сообщения:   
Начать новую тему   Ответить на тему    Список форумов Конференция САПР Bentley MicroStation -> Профессиональное Часовой пояс: GMT + 3
Страница 1 из 1

 
Перейти:  
Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете голосовать в опросах


Powered by phpBB © 2001, 2005 phpBB Group