Операционная система Microsoft Windows 3.1 для программиста -том 1


Стандарты кодов символов - часть 2


Соответствующим выбором шрифта вы можете добиться отображения текста в окне Windows с использованием как набора ANSI, так и набора OEM. По умолчанию в контекст отображения выбирается системный шрифт, для которого используется набор ANSI.

Сравнивая приведенные выше таблицы, нетрудно заметить, что для одинаковых символов наборы OEM и ANSI используют разные коды, которые к тому же могут зависеть от используемого национального языка. Это приводит к необходимости перекодировки символов, например при переносе текстов, подготовленных в среде MS-DOS в среду Windows или при открытии файлов из среды Windows. В последнем случае перед использованием имя файла, подготовленное с использованием набора ANSI, требуется перекодировать в набор OEM.

Появляются дополнительные трудности с преобразованием строчных букв в прописные и обратно, так как правила преобразования и сортировки могут различаться для разных национальных языков.

К счастью, специальный набор функций программного интерфейса Windows берет на себя работу по преобразованию и перекодировке символов.

Для перекодировки строки символов, закрытой двоичным нулем, из набора ANSI в набор OEM предназначена функция AnsiToOem:

void WINAPI AnsiToOem(const char _huge* hpszWindowsStr, char _huge* hpszOemStr);

Первый параметр (hpszWindowsStr) представляет собой указатель типа _huge на преобразуемую строку, второй (hpszOemStr) - на буфер для записи результата преобразования.

Похожая по назначению функция AnsiToOemBuff выполняет преобразование буфера заданного размера:

void WINAPI AnsiToOemBuff(LPCSTR lpszWindowsStr, LPSTR lpszOemStr, UINT cbWindowsStr);

Первый параметр этой функции (lpszWindowsStr) является дальним указателем на буфер, содержащий преобразуемые данные, второй (lpszOemStr) - на буфер для записи результата. Третий параметр (cbWindowsStr) определяет размер входного буфера, причем нулевой размер соответствует буферу длиной 64 Кбайт (65536 байт).

Обратное преобразование выполняется функциями OemToAnsi и OemToAnsiBuff:




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



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