На главную

On-line справка по Win32 API

Написать письмо
БЕСПЛАТНАЯ ежедневная online лотерея! Выигрывай каждый день БЕСПЛАТНО!
Список всех статей A-B-C-D-E-F-G-H-I-J-K-L-M-N-O-P-Q-R-S-T-U-V-W-X-Y-Z | Скачать Вниз

Using Functions That Have No Unicode Equivalents



Windows functions that have not been exported in a Unicode version have typically been replaced by more powerful or extended functions that do support Unicode. If you are porting code that calls the OpenFile function, for example, you can support Unicode by using the CreateFile or CreateFileEx function instead.

If a function has no Unicode equivalent, you can map characters to and from 8-bit character sets before and after the function call. For example, the number-formatting functions atoi and itoa use only the digits 0 through 9. Normally, mapping Unicode to 8-bit characters could cause loss of data, but you can avoid this by making your code type independent and conditionalizing the expressions. For example, the following statements are type dependent and should be changed to support Unicode.

char str[4];

num = atoi(str);


These statements could be rewritten as follows to make them type independent.

TCHAR tstr[4];

CHAR strTmp[SIZE];

#ifdef UNICODE

wcstombs(strTmp, (const wchar_t *) tstr, sizeof(strTmp));

num = atoi(strTmp);

#else

num = atoi(tstr);

#endif


In this example, the wcstombs function is the standard C function that translates Unicode to ASCII. The example relies on the fact that the digits 0 through 9 can always be translated from Unicode to ASCII, even if some of the surrounding text cannot. The atoi function stops at any character that is not a digit. You can use the LCMapString function if you need to process text that includes the native digits provided for some of the scripts in Unicode.


Пригласи друзей и счет твоего мобильника всегда будет положительным!
Предыдущая статья
 
Сайт Народ.Ру Интернет
Следующая статья
Пригласи друзей и счет твоего мобильника всегда будет положительным!

Использование Функционирует, что No Имеет Эквиваленты Уникода



Окно функционирует, что не экспортирован в версию Уникода обычно заменен более мощными или расширенными функциями, которые поддерживают Уникод. Если Вы переносите код, который называет функцию OpenFile, например, Вы можете поддержать Уникод используя CreateFile или функция CreateFileEx взамен.

Если функция не имеет эквивалент Уникода, Вы можете отобразить символы на и из 8- битовых наборов символов перед и после функционального вызова. Например, число-форматирование функционирует atoi и itoa использование только цифры 0 по 9. Нормально, распределение Уникода в 8- битовые символы могло бы вызвать убыток данных, но Вы можете избегать это делая вашим кодовым типом независимым и conditionalizing выражения. Например, следующие утверждения являются типом зависимым и должно быть измениться, чтобы поддерживать Уникод.

символ стр.(ул.)[4];

номер = atoi(стр.(ул.));


Эти утверждения могли быть rewritten следующим образом, чтобы делать их набирать независимый.

TCHAR tstr[4];

СИМВОЛ strTmp[SIZE];

#ifdef УНИКОД

wcstombs(strTmp, (const wchar_t *) tstr, sizeof(strTmp));

номер = atoi(strTmp);

#else

номер = atoi(tstr);

#endif


В этом примере, wcstombs функция является стандартной функцией C, которая переводится Уникод на ASCII. Пример доверяется на то, что цифры 0 по 9 могут всегда перевожены от Уникода до ASCII, даже если бы некоторый окружающий текст не может. Функция atoi прекращается в любом символе, который - не цифра. Вы можете использовать функцию LCMapString если Вам нужно обрабатывать текст, который включает исконные цифры предусматривал для некоторых сценариев в Уникоде.


Вверх Version 1.3, Oct 26 2010 © 2007, 2010, mrhx Вверх
 mrhx software  Русский перевод OpenGL  Русский перевод Win32 API
 
Используются технологии uCoz