Азбука программирования в Win32 API


Азбука программирования в Win32 API - стр. 26


28

РАБОТА С UNICODE ПРИ ИСПОЛЬЗОВАНИИ

C/C++ RUN-TIME LIBRARY

Все функции RTL (Run-Time Library - библиотека времени выполне­ния), работающие со строками и символами, имеют ANSI- и Unicode-Персии. Unicode-версии функций используют новый тип данных, введен­ный для описания символов Unicode. Этот тип описан следующим обра­зом:

typedef unsigned short wchar^t;

ANSI-версии, которые по старинке применяют старый добрый char, используют те имена функций, к которым привыкли программисты на языке С. В то же время, имена функций, использующих Unicode, не совпадают с привычными нам старыми именами типа printfQ, strcatQ и т. д. Для того чтобы написать приложение, которое легко адаптировалось оы к обеим кодировкам, нужно уметь манипулировать именами функций и типами данных. Принцип понятен - условная компиляция. В RTL для гого, чтобы определить, какую версию программы строить, введен сим­вол препроцессора UNICODE. В зависимости от того, определен этот символ или нет, строится та или иная версия программы.

Кроме этого, вместо файла string.h используется файл tchar.h, кото­рый обеспечивает универсальность. В нем определен громадный список макросов, которые необходимо использовать для того, чтобы препроцес­сор знал, какой набор функций ему необходимо вызывать, ANSI или Unicode. Этот список макросов приведен в приложении. Предлагаю читателю обратить внимание на то, что для написания кода, который мог бы компилироваться как для ANSI, так и для Unicode, необходимо вместо функций, приведенных в правых колонках, использовать имена, приво­димые в левых колонках.

Для того чтобы указать препроцессору, как нужно строить компили­руемый файл, применяется символ JJNICODE. Этот тип данных исполь­зуется при работе с символами Unicode. Для того чтобы писать приложе­ния, работающие как с ANSI, так и с Uncode, пррименяется другой макрос - FCHAR, который в зависимости от факта определения UNICODE определяется либо

lypcdcfwcharj ТС'НЛК;

typixief unsigned char TCHAR.




Начало  Назад  Вперед



Книжный магазин